Lansarea limbajului de programare Rust 1.54

A fost publicată lansarea limbajului de programare Rust 1.54, fondat de proiectul Mozilla, dar dezvoltat acum sub auspiciile organizației independente non-profit Rust Foundation. Limbajul se concentrează pe siguranța memoriei, asigură gestionarea automată a memoriei și oferă mijloacele pentru a realiza paralelismul ridicat al sarcinilor fără a utiliza un colector de gunoi sau un timp de rulare (timpul de rulare este redus la inițializarea de bază și întreținerea bibliotecii standard).

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. Pentru a distribui biblioteci, a asigura asamblarea și a gestiona dependențele, proiectul dezvoltă managerul de pachete Cargo. Depozitul crates.io este acceptat pentru găzduirea bibliotecilor.

Principalele inovații:

  • S-a adăugat posibilitatea de a utiliza macrocomenzi asemănătoare funcțiilor în interiorul atributelor (macrocomenzi procedurale și macrocomenzi create folosind macrocomandă „macro_rules!”). Astfel de macrocomenzi se disting de funcții prin simbolul „!” după nume (macro!(...)) și înlocuirea textului sursă macro în loc de a genera un apel de funcție. Apelarea macrocomenzilor în cadrul atributelor poate fi utilă pentru includerea conținutului din alte fișiere în documentarea comentariilor. De exemplu, pentru a insera conținutul fișierului README și rezultatul execuției scriptului, puteți specifica: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR") "), "/generated.rs" )] mod generat;
  • Funcțiile de compilare încorporate (Intrinseci) pentru platforma wasm32 au fost stabilizate, permițând utilizarea instrucțiunilor SIMD în WebAssembly. Majoritatea funcțiilor, cum ar fi v128_bitselect, sunt disponibile în modul „sigur”, dar unele funcții care funcționează cu pointeri (de exemplu, v128_load) rămân „nesigure”.
  • Utilizarea implicită a compilației incrementale a revenit, permițându-vă să reconstruiți numai părțile modificate ale codului, ceea ce poate reduce semnificativ timpul necesar pentru a construi un proiect la recompilare după efectuarea unor modificări minore. Compilarea incrementală a fost dezactivată în versiunea 1.52.1 din cauza erorilor ascunse care au apărut după adăugarea unei verificări suplimentare pentru încărcarea datelor din memoria cache a discului.
  • O nouă parte a API-urilor a fost transferată în categoria stabilă, inclusiv următoarele stabilizate:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arc::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Au fost adăugate opțiuni la cargo-tree: „—prune ” pentru a elimina un pachet din graficul de dependență, „—depth” pentru a afișa numai elemente ale unui anumit nivel de imbricare în arborele de dependență, „—edges no-proc- macro” pentru a ascunde dependențele macrocomenzilor procedurale.

Sursa: opennet.ru

Adauga un comentariu