Lansarea limbajului de programare Rust 1.55

A fost publicată lansarea limbajului de programare Rust 1.55, 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:

  • Managerul de pachete Cargo are capacitatea de a îmbina erorile și avertismentele duplicate care apar în timpul unei build. Când executați comenzi precum „testul încărcăturii” și „verificarea încărcăturii --all-targets” care au ca rezultat mai multe versiuni ale unui pachet cu parametri diferiți, utilizatorului i se arată acum un rezumat al apariției unei probleme care se repetă, în loc să i se arate mai multe avertismente identice atunci când construiți același lucru în mod repetat.fișier. $ cargo +1.55.0 verifica —all-targets Verificarea foo v0.1.0 avertisment: funcția nu este utilizată niciodată: ‘foo’ —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = notă: „#[warn(dead_code)]” activat în mod implicit avertisment: „foo” (lib) a generat 1 avertisment de avertizare: „foo” (test lib) a generat 1 avertisment (1 duplicat) țintă dev [neoptimizat + debuginfo] finalizată (s) în 0.84 s
  • Codul de analiză în virgulă mobilă din biblioteca standard a fost mutat pentru a utiliza algoritmul Eisel-Lemire mai rapid și mai precis, care a rezolvat unele probleme observate anterior cu rotunjirea și analizarea numerelor cu un număr foarte mare de cifre.
  • Capacitatea de a specifica intervale neînchise în șabloane a fost stabilizată („X..” este interpretat ca un interval care începe cu valoarea X și se termină cu valoarea maximă a tipului întreg): potriviți x ca u32 { 0 => println! (“zero!”), 1.. => println!(„număr pozitiv!”), }
  • Variante extinse de eroare acoperite de std::io::ErrorKind (clasifică erorile în categorii precum NotFound și WouldBlock). Anterior, erorile care nu se încadrau în categoriile existente intrau în categoria ErrorKind::Other, care era folosită și pentru erorile din codul terților. Există acum o categorie internă separată ErrorKind::Uncategorized pentru erori care nu se încadrează în categoriile existente, iar categoria ErrorKind::Other este limitată la erori care nu apar în biblioteca standard (funcții standard de bibliotecă care returnează io::Error nu mai utilizați categoria ErrorKind:: Altele).
  • O nouă porțiune a API-ului a fost mutată în categoria de stabil, inclusiv metodele și implementările de trăsături au fost stabilizate:
    • Bound::clonat
    • Scurgere::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • PoateUninit::assume_init_mut
    • PoateUninit::assume_init_ref
    • PoateUninit::scrie
    • matrice::hartă
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este utilizat în metoda str::from_utf8_unchecked.
  • Al treilea nivel de suport a fost implementat pentru platforma powerpc64le-unknown-freebsd. Al treilea nivel implică suport de bază, dar fără testare automată, publicarea versiunilor oficiale sau verificarea dacă codul poate fi construit.

Sursa: opennet.ru

Adauga un comentariu