Izdaja programskega jezika Rust 1.62

Objavljena je bila izdaja splošnega programskega jezika Rust 1.62, 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« ponuja ukaz »add«, ki vam omogoča dodajanje novih odvisnosti v manifest Cargo.toml ali spreminjanje obstoječih odvisnosti iz ukazne vrstice. Ukaz omogoča tudi določanje posameznih funkcij in različic, na primer: cargo add serde —funkcije izhajajo iz cargo add nom@5
  • Dodana možnost uporabe »#[derive(Default)]« z enumami, v katerih je privzeta možnost definirana z atributom »#[default]«. #[derive(Default)] enum Morda { #[privzeto] Nič, nekaj(T),}
  • Na platformi Linux se uporablja bolj kompaktna in hitrejša izvedba sinhronizacijskega mehanizma Mutex, ki temelji na uporabi futexov, ki jih zagotavlja jedro Linuxa. Za razliko od prej uporabljene izvedbe, ki temelji na knjižnici pthreads, nova različica za shranjevanje stanja Mutex uporablja samo 5 bajtov namesto 40. Podobno sta bila mehanizma zaklepanja Condvar in RwLock prenesena v futex.
  • Izvedena je bila druga raven podpore za ciljno platformo x86_64-unknown-none, zasnovana za ustvarjanje izvedljivih datotek, ki lahko delujejo brez operacijskega sistema. Navedeno ciljno platformo je na primer mogoče uporabiti pri pisanju komponent jedra. Druga raven podpore vključuje garancijo za montažo.
  • Tretja raven podpore je bila implementirana za platformi aarch64-pc-windows-gnullvm in x86_64-pc-windows-gnullvm. Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objavljanja uradnih gradenj ali preverjanja, ali je kodo mogoče zgraditi.
  • Nov del API-ja je bil premaknjen v kategorijo stabilnega, vključno s stabiliziranimi metodami in implementacijami lastnosti:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::vrstice
    • windows::CommandExt::raw_arg
    • impl privzeta vrednost za AssertUnwindSafe
    • Od > za Rc
    • Od > za Arc<[u8]>
    • FusedIterator za EncodeWide

    Vir: opennet.ru

Dodaj komentar