A fost publicată lansarea limbajului de programare Rust 1.52, 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 eliminat legarea la ordinea de execuție a comenzilor „verificare marfă” și „clippy marfă”. Anterior, apelarea „cargo clippy” după „cargo check” nu lansa utilitarul clippy (linter) din cauza lipsei de separare a cache-ului pentru aceste moduri de verificare. Acum această problemă a fost rezolvată și ordinea în care sunt numite „cargo clippy” și „cargo check” nu mai contează.
- O nouă parte a API a fost transferată în categoria stabilă, inclusiv următoarele metode au fost stabilizate:
- Argumente::as_str
- char::MAX
- char::REPLACEMENT_CHARACTER
- char::UNICODE_VERSION
- char::decode_utf16
- char::from_digit
- char::from_u32_unchecked
- char::from_u32
- slice::partition_point
- str::rsplit_once
- str::split_once
- Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este utilizat în metodele:
- char::len_utf8
- char::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_minuscule
- char::eq_ignore_ascii_case
- u8::to_ascii_majuscule
- u8::to_ascii_minuscule
- u8::eq_ignore_ascii_case
- S-a adăugat verificarea scame unsafe_op_in_unsafe_fn pentru a determina dacă codul nesigur utilizat în funcțiile nesigure este încadrat de blocuri nesigure.
- Este permis să aruncați pointeri mutabili către matrice sub formă de pointeri către tipul elementului de matrice. let mut x: [usize; 2] = [0, 0]; fie p = &mut x ca *mut use; fie p = &mut x ca *const usize;
- 9 noi cecuri au fost adăugate la clippy (linter).
- Managerul de pachete de marfă acceptă acum câmpul „manifest_path” în JSON pentru pachete. S-a adăugat suport pentru specificarea informațiilor de licență în format SPDX 3.11 în depozitul crates.io.
- Este permisă specificarea mai multor filtre atunci când rulați teste, de exemplu rularea „test de încărcare - bară foo” va rula toate testele care se potrivesc cu măștile „foo” și „bar”.
- Setul de instrumente LLVM implicit a fost actualizat la LLVM 12.
- Al treilea nivel de suport a fost implementat pentru platformele s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl și powerpc-unknown-openbsd. 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
