Lansarea limbajului de programare Rust 1.68

A fost publicată lansarea limbajului de programare de uz general Rust 1.68, fondat de proiectul Mozilla, dar dezvoltat acum sub auspiciile organizației independente non-profit Rust Foundation. Limbajul se concentrează pe siguranța memoriei și oferă mijloacele pentru a obține un paralelism ridicat al jobului, evitând în același timp utilizarea unui colector de gunoi și a unui timp de rulare (timpul de rulare este redus la inițializarea de bază și întreținerea bibliotecii standard).

Metodele de manipulare a memoriei Rust salvează dezvoltatorul de erori la manipularea pointerilor și protejează împotriva problemelor care apar din cauza manipulării memoriei de nivel scăzut, cum ar fi accesarea unei zone de memorie după ce aceasta a fost eliberată, dereferențiarea pointerilor nuli, depășirile de buffer etc. Pentru a distribui biblioteci, a furniza versiuni și a gestiona dependențe, proiectul dezvoltă managerul de pachete Cargo. Depozitul crates.io este acceptat pentru găzduirea bibliotecilor.

Siguranța memoriei este furnizată în Rust în timpul compilării prin verificarea referințelor, urmărirea proprietății obiectului, urmărirea duratelor de viață a obiectelor (sfere de aplicare) și evaluarea corectitudinii accesului la memorie în timpul execuției codului. Rust oferă, de asemenea, protecție împotriva depășirilor de numere întregi, necesită inițializarea obligatorie a valorilor variabilelor înainte de utilizare, gestionează mai bine erorile în biblioteca standard, aplică implicit conceptul de referințe imuabile și variabile, oferă tastare statică puternică pentru a minimiza erorile logice.

Principalele inovații:

  • Suportul pentru protocolul Sparse a fost stabilizat în managerul de pachete Cargo și în depozitul crates.io, care definește o nouă modalitate de a lucra cu un index care reflectă versiunile disponibile ale tuturor pachetelor existente în depozit. Noul protocol vă permite să creșteți semnificativ viteza de lucru cu crates.io și să rezolvați problemele de scalare cu o creștere suplimentară a numărului de pachete din depozit.

    Pentru a reduce întârzierile care rezultă din descărcarea unui index complet, Sparse, în loc să acceseze indexul folosind Git, descarcă direct prin HTTPS numai datele de index necesare, acoperind dependențele unui anumit proiect. Noul serviciu index.crates.io este folosit pentru a returna datele de index. În mod implicit, noul protocol este planificat să fie utilizat în ramura Rust 1.70, iar înainte de aceasta, pentru a-l activa, puteți seta variabila de mediu „CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse” sau adăugați parametrul „protocol = la „[registries.crates”. -io]" din fișierul .cargo/config.toml "sparse"'.

  • S-a adăugat macro „pin!”, care permite crearea unei structuri Pin<&mut T> din expresia „T” cu fixarea locală a stării sale (spre deosebire de Box::pin nu alocă memorie pe heap, ci se leagă la nivelul stivei) .
  • Este propus un handler implicit de eroare de alocare a memoriei, care este utilizat atunci când se utilizează pachetul standard de alocare. Aplicațiile care activează doar alocare (fără std) vor apela acum handlerul „panic!” în cazul erorilor de alocare a memoriei, care poate fi interceptat opțional cu „#[panic_handler]”. Programele care folosesc biblioteca std vor imprima în continuare informații despre eroare în stderr și se blochează.
  • 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:
    • {core,std}::pin::pin!
    • impl Din pentru {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut pentru PathBuf
  • Atributul „const”, care determină posibilitatea utilizării lui în orice context în loc de constante, este utilizat în funcția VecDeque::new.
  • Platforma Android necesită acum cel puțin NDK r25 (API 19), adică. Versiunea minimă de Android acceptată a fost ridicată la 4.4 (KitKat).
  • A fost implementat al treilea nivel de suport pentru platforma Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Al treilea nivel implică suport de bază, dar fără testare automată, publicarea versiunilor oficiale și verificarea capacității de a construi codul.

Sursa: opennet.ru

Adauga un comentariu