Lansarea limbajului de programare Rust 1.46

publicat versiunea 1.46 a limbajului de programare a sistemului Rugină, fondată de proiectul Mozilla. Limbajul se concentrează pe siguranța memoriei, oferă gestionarea automată a memoriei și oferă instrumente pentru realizarea unui paralelism ridicat al sarcinilor fără a utiliza un colector de gunoi și Runtime.

Gestionarea automată a memoriei de la Rust elimină erorile la manipularea pointerilor și protejează împotriva problemelor care decurg din manipularea memoriei de nivel scăzut, cum ar fi accesarea unei regiuni de memorie după ce aceasta a fost eliberată, dereferențele pointerului nul, depășirile de buffer etc. Se dezvoltă un manager de pachete pentru a distribui biblioteci, a asigura asamblarea și a gestiona dependențele de către proiect. încărcătură, permițându-vă să obțineți bibliotecile necesare pentru program cu un singur clic. Un depozit este acceptat pentru a găzdui biblioteci lăzi.io.

Principalul inovații:

  • Au fost extinse capacitățile funcțiilor definite folosind expresia „const fn”, care pot fi numite nu numai ca funcții obișnuite, ci și utilizate în orice context în loc de constante. Aceste funcții sunt calculate în timpul compilării, nu în timpul rulării, deci sunt supuse anumitor restricții, cum ar fi capacitatea de a citi numai din constante.

    Noua versiune elimină interdicția utilizării operatorilor booleeni („&&” și „||”) în astfel de funcții și permite utilizarea constructelor „if”, „if let”, „match”,
    „while”, „while let” și „loop”, și oferă, de asemenea, capacitatea de a converti în felii (slice, matrice dinamice) folosind expresia „&[T]”. Utilizarea acestor caracteristici în funcțiile „const fn” vă permite să mutați unele operațiuni care necesită mult resurse în etapa de compilare. De exemplu, implementarea „const-sha1” face posibilă calcularea hashurilor SHA-1 în timpul compilării, ceea ce duce la accelerarea legăturilor WinRT pentru Rust de aproape 40 de ori.

  • Pentru a face mesajele de eroare mai informative, suportul pentru atributul „#[track_caller]” a fost stabilizat, care este util pentru funcții precum unwrap, care poate provoca panică dacă tipurile sunt utilizate incorect. Atributul specificat va fi folosit de gestionarea de panică pentru a imprima locația apelantului într-un mesaj de eroare.
  • Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este utilizat în metoda std::mem::forget.
  • O nouă porțiune a API-ului a fost mutată în categoria stabilă, inclusiv stabilizate Option::zip și vec::Drain::as_slice.
  • În managerul de pachete Cargo adăugat suport pentru noile variabile de mediu setate la compilarea unui pachet: CARGO_BIN_NAME (numele fișierului executabil rezultat), CARGO_CRATE_NAME (numele pachetului), CARGO_PKG_LICENSE (licența specificată în manifest), CARGO_PKG_LICENSE_FILE (calea către fișierul de licență).

Sursa: opennet.ru

Adauga un comentariu