Izdaja programskega jezika Rust 1.68

Objavljena je bila izdaja splošnega programskega jezika Rust 1.68, ki ga je ustanovil projekt Mozilla, zdaj pa se razvija pod okriljem neodvisne neprofitne organizacije Rust Foundation. Jezik se osredotoča na varnost pomnilnika in zagotavlja sredstva za doseganje visoke paralelnosti opravil, hkrati pa se izogiba uporabi zbiralnika smeti in izvajalnega okolja (izvajalni čas je zmanjšan na osnovno inicializacijo in vzdrževanje standardne knjižnice).

Rustove metode ravnanja s pomnilnikom rešijo razvijalca pred napakami pri ravnanju s kazalci in ščitijo pred težavami, ki nastanejo zaradi ravnanja s pomnilnikom na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnih kazalcev, prekoračitev medpomnilnika itd. Za distribucijo knjižnic, zagotavljanje gradenj in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo. Repozitorij crates.io je podprt za gostovanje knjižnic.

Varnost pomnilnika je v Rustu zagotovljena v času prevajanja s preverjanjem sklicevanj, spremljanjem lastništva objekta, spremljanjem življenjskih dob objektov (obseg) in ocenjevanjem pravilnosti dostopa do pomnilnika med izvajanjem kode. Rust zagotavlja tudi zaščito pred celoštevilskimi prelivi, zahteva obvezno inicializacijo vrednosti spremenljivk pred uporabo, bolje obravnava napake v standardni knjižnici, privzeto uporablja koncept nespremenljivih referenc in spremenljivk, ponuja močno statično tipkanje za zmanjšanje logičnih napak.

Glavne novosti:

  • Upravitelj paketov Cargo in repozitorij crates.io sta stabilizirala podporo za protokol Sparse, ki definira nov način dela z indeksom, ki odraža razpoložljive različice vseh paketov, ki obstajajo v repozitoriju. Novi protokol vam omogoča znatno povečanje hitrosti dela s crates.io in reševanje težav s skaliranjem z nadaljnjo rastjo števila paketov v skladišču.

    Za zmanjšanje zamud, ki nastanejo zaradi prenosa celotnega indeksa, Sparse namesto dostopa do indeksa z uporabo Git vključuje neposredno prenašanje prek HTTPS samo potrebnih podatkov indeksa, ki pokrivajo odvisnosti določenega projekta. Nova storitev, index.crates.io, se uporablja za zagotavljanje podatkov indeksa. Privzeto je predvidena uporaba novega protokola v veji Rust 1.70, pred tem pa lahko, da ga omogočite, nastavite spremenljivko okolja "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ali dodate parameter 'protocol =' v "[registries. crates-io]" razdelek datoteke .cargo/config.toml 'sparse'.

  • Dodan je makro »pin!«, ki vam omogoča, da ustvarite strukturo Pin<&mut T> iz izraza »T« z lokalnim pripenjanjem njegovega stanja (za razliko od Box::pin ne dodeli pomnilnika na kopici, ampak se poveže na ravni sklada).
  • Predlagana je bila privzeta obravnava napake dodelitve pomnilnika, ki se uporablja pri uporabi standardnega paketa alloc. Aplikacije, ki omogočajo samo alloc (brez std), bodo zdaj poklicale upravljalnik »panic!«, ko dodelitev pomnilnika ne uspe, kar je po želji mogoče prestreči z uporabo »#[panic_handler]«. Programi, ki uporabljajo knjižnico std, bodo še naprej tiskali informacije o napakah v stderr in se zrušili.
  • Nov del API-ja je bil premaknjen v kategorijo stabilnega, vključno s stabiliziranimi metodami in implementacijami lastnosti:
    • {core,std}::pin::pin!
    • impl Od za {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut za PathBuf
  • V funkciji VecDeque::new se uporablja atribut “const”, ki določa možnost uporabe v kateremkoli kontekstu namesto konstant.
  • Za delo na platformi Android je zdaj potreben vsaj NDK r25 (API 19), tj. Najmanjša podprta različica Androida je bila dvignjena na 4.4 (KitKat).
  • Tretja raven podpore je implementirana za platformo Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objavljanja uradnih gradenj ali preverjanja, ali je kodo mogoče zgraditi.

Vir: opennet.ru

Dodaj komentar