Avalikustatud on üldotstarbelise programmeerimiskeele Rust 1.62 väljaanne, mis põhineb Mozilla projektist, kuid mida arendab nüüd iseseisev mittetulundusühing Rust Foundation. Keele fookuses on mälu ohutu kasutamine ning see pakub vahendeid kõrge ülesannete paralleelsuse saavutamiseks, vältides prügi kogumist ja runtime'i (runtime piirdub põhialustamise ja standardraamatukogu hooldamisega).
Rustis olevad mäluhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mälutöötlusest tulenevate probleemide, nagu vabanenud mälu alale juurdepääs, nullosutite de-referentseerimine, mälupiiride ületamine jne. Raamatukogude levitamiseks, projekti koostamise ja sõltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.
Rust tagab turvalise mälutöötluse kompilatsiooni ajal, kontrollides viiteid, jälgides objektide omandit, arvestades objektide elutsüklit (nähtavust) ja hinnates mälule juurdepääsu õigsust koodi käitamise ajal. Rust pakub ka meetmeid enamike täisarvude ületamiste vältimiseks, nõuab muutujate väärtuste algväärtustamist enne kasutamist, käsitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade minimeerimiseks.
Põhilised uuendused:
- Pakihalduris "cargo" on pakkuda käsku "add", mis võimaldab käsurealt lisada Cargo.toml-i manifesti uusi sõltuvusi või muuta olemasolevaid sõltuvusi. Käsk võimaldab ka määrata eraldi omadusi (feature) ja versioone, näiteks: cargo add serde —features derive cargo add nom@5
- On lisatud võimalus kasutada "#[derive(Default)]" enum'itega, mille puhul on atribuudiga "#[default]" määratud vaikimisi variant. #[derive(Default)] enum Maybe { #[default] Nothing, Something(T), }
- Linuxi platvormil on rakendatud kompaktsem ja kiirem Mutex sünkroniseerimise mehhanismi teostus, mis põhineb Linuxi tuuma pakutud futeekside kasutamisel. Erinevalt varasemast pthreads põhises teostusest, tarbib uus variant Mutexi oleku salvestamiseks vaid 5 baiti, mitte 40. Analoomselt on futeeksidele üle viidud Condvar ja RwLock lukustamise mehhanismid.
- On rakendatud teise taseme tugi sihtplatvormile x86_64-unknown-none, mis on mõeldud täitmisfailide genereerimiseks, mis suudavad töötada ilma operatsioonisüsteemita. Näiteks võib nimetatud sihtplatvormi kasutada tuuma komponentide kirjutamiseks. Teine taseme tugi tähendab töötluse garantii.
- On rakendatud kolmanda taseme tugi platvormidele aarch64-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm. Kolmas tase hõlmab põhitugi, kuid ilma automatiseeritud testimise, ametlike kogude avaldamise ja koodikogumise kontrollimiseta.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
- bool::then_some
- f32::total_cmp
- f64::total_cmp
- Stdin::lines
- windows::CommandExt::raw_arg
- impl<T: Default> vaikimisi väärtus AssertUnwindSafe<T> jaoks
- From<Rc<str>> Rc jaoks
- From<Arc<str>> Arc<[u8]> jaoks
- FusedIterator EncodeWide jaoks
Allikas: opennet.ru
