Izdanje Rust programskog jezika 1.65

Objavljen je programski jezik opće namjene Rust 1.65, utemeljen na projektu Mozilla, ali sada razvijen pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe skupljača smeća i vremena izvođenja (vrijeme izvođenja je smanjeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programere od pogrešaka pri manipuliranju pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskoj razini, kao što je pristup memorijskom području nakon što je ono oslobođeno, dereferenciranje nultih pokazivača, prekoračenje međuspremnika, itd. Za distribuciju biblioteka, pružanje nadogradnji i upravljanje ovisnostima, projekt razvija upravitelja paketa Cargo. Repozitorij crates.io podržan je za smještaj knjižnica.

Sigurnost memorije osigurana je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta, praćenjem životnih vijekova objekta (opsega) i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.

Glavne inovacije:

  • Dodana je podrška za generičke povezane tipove (GAT, Generic Associated Types), koji omogućuju stvaranje pseudonima tipa povezanih s drugim tipom i omogućuju vam pridruživanje konstruktora tipa sa svojstvima. trait Foo { type Bar<'x>; }
  • Implementiran je izraz "let ... else", koji vam omogućuje da provjerite uvjet podudaranja uzorka izravno unutar izraza "let" i izvršite proizvoljni kod ako se uzorak ne podudara. let Ok(count) = u64::from_str(count_str) else { panic!("Ne mogu analizirati cijeli broj: '{count_str}'"); };
  • Dopustite korištenje naredbe break za prerano napuštanje imenovanih blokova, koristeći naziv bloka (oznaku) za identifikaciju bloka koji treba prekinuti. let result = 'block: { do_thing(); if condition_not_met() { break 'blok 1; } učini_sljedeću_stvar(); if condition_not_met() { break 'block 2; } učiniti_zadnju_stvar(); 3};
  • Za Linux je dodana mogućnost zasebnog spremanja informacija o ispravljanju pogrešaka (split-debuginfo), koja je prethodno bila dostupna samo za macOS platformu. Kada navedete opciju "-Csplit-debuginfo=unpacked", podaci o debuginfo u DWARF formatu bit će spremljeni u nekoliko zasebnih objektnih datoteka s ekstenzijom ".dwo". Određivanje "-Csplit-debuginfo=packed" stvorit će jedan paket u ".dwp" formatu koji uključuje sve podatke o debuginfo za projekt. Za integraciju debuginfo izravno u odjeljak .debug_* ELF objekata, možete koristiti opciju "-Csplit-debuginfo=off".
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
    • std::povratni trag::povratni trag
    • Vezano::kao_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u funkcijama <*const T&>::offset_from i <*mut T>::offset_from
  • Kao dio završne faze prijenosa implementacije LSP (Language Server Protocol) protokola na rust-analyzer, zastarjela implementacija Rust Language Servera (RLS) zamijenjena je stub serverom koji izdaje upozorenje s prijedlogom za prelazak na pomoću analizatora hrđe.
  • Tijekom kompilacije omogućena je podrška za ugrađenu implementaciju MIR međukoda, što ubrzava kompilaciju tipičnih crate paketa za 3-10%.
  • Kako bi se ubrzale planirane izgradnje, upravitelj paketa Cargo omogućuje razvrstavanje poslova koji čekaju izvršenje u redu čekanja.

Osim toga, možete primijetiti intervju o korištenju jezika Rust u Volvu za razvoj komponenti automobilskih informacijskih sustava. Nema planova za ponovno pisanje postojećeg i testiranog koda u Rustu, ali za novi kod, Rust je jedna od preferiranih opcija za poboljšanje kvalitete uz niže troškove. Radne skupine vezane uz korištenje Rust jezika stvorene su i u automobilskim udrugama AUTOSAR (AUTomotive Open System ARchitecture) i SAE (Society of Automotive Engineers).

Dodatno, David Kleidermacher, Googleov potpredsjednik za inženjering, govorio je o prijevodu koda koji se koristi u Android platformi za upravljanje ključevima enkripcije u Rust, kao io korištenju Rusta u implementaciji DNS-a preko HTTPS protokola u stog za UWB- čipove (Ultra-Wideband) i u virtualizacijskom okviru (Android Virtualization Framework) povezanom s Tensor G2 čipom. Novi skupovi za Bluetooth i Wi-Fi, prepisani u Rustu, također se razvijaju za Android. Opća strategija je postupno jačanje sigurnosti, prvo pretvaranjem najranjivijih i najvitalnijih softverskih komponenti u Rust, a zatim širenjem na druge povezane podsustave. Prošle godine je Rust jezik uvršten na popis jezika dopuštenih za razvoj Android platforme.

Izvor: opennet.ru

Dodajte komentar