Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.79 vĂ€ljaanne, mis pĂ”hineb Mozilla projektist, kuid mida arendab nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€luga ohutule tööle ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, ilma et oleks vaja prĂŒgi kogujaid ja jooksutamisnumbrit (runtime piirdub algettevalmistusega 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:
- On lisatud inline-konstandi tugi, mida saab otse koodis mĂ€rkida 'const { ⊠}' plokkide abil, mida töödeldakse konstandite kontekstis ja mis vĂ”imaldavad teha ilma eraldiseisva konstandi mÀÀratlemiseta. 'const { ⊠}' plokis mÀÀratud kood arvutatakse kompileerimise ajal ja seda kasutatakse konstandina, ilma et programm selle kĂ€igus tĂ€idetaks. Erinevalt konstandite mÀÀratlemisest vĂ€ljendiga 'const ITEM: ⊠= âŠ', ei ole 'const { ⊠}' plokkides vajalik tĂŒĂŒbi nĂ€itamine, kuna nendes toetatakse automaatset tĂŒĂŒbi tuvastamist. NĂ€iteks kood eraldi mÀÀra konstandiga
const EMPTY: Option<Vec> = None;
let foo = [EMPTY; 100];vÔib asendada otse kasutamisega:
let foo = [const { None }; 100];
- SĂŒntaks «T: Trait» stabiliseeritud, et mÀÀrata piirangud assotsiatiivsetes tĂŒĂŒpides, vĂ”imaldades lĂŒhendada sisemiste piirangute mÀÀratlemise vĂ€ljendeid, mis varem nĂ”udsid sisemist impl Trait vĂ”i mitmeid tingimusi «where».
- Automaatne ajavahemike pikendamine ajutiste vÀÀrtuste puhul, mida kasutatakse «match» ja «if» konstruktsioonides, on tagatud.
let a = if true {
..;
&temp() // aeg pikeneb
} else {
..;
&temp() // aeg pikeneb
}; - Stabiliseeritud funktsiooni main importimise vÔimalus teistelt moodulitelt ja crate-paketilt.
- Standardsest teegist kogumise ajal kasutusel lipp «-Cforce-frame-pointers=yes», mis lisab andmeid steki rekonstrueerimiseks programmide profiilimise ajal.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
- {integer}::unchecked_add
- {integer}::unchecked_mul
- {integer}::unchecked_sub
- ::split_at_unchecked
- ::split_at_mut_unchecked
- ::utf8_chunks
- str::Utf8Chunks
- str::Utf8Chunk
- ::is_aligned
- ::is_aligned
- NonNull::is_aligned
- ::len
- ::len
- ::is_empty
- ::is_empty
- NonNull::::is_empty
- CStr::count_bytes
- io::Error::downcast
- num::NonZero
- path::absolute
- proc_macro::Literal::byte_character
- proc_macro::Literal::c_string
- Konstantse mÀrgendiga `const`, mis mÀÀrab vÔimaluse kasutada konstandina igas kontekstis, on rakendatud funktsioonides:
- Atomic*::into_inner
- io::Cursor::new
- io::Cursor::get_ref
- io::Cursor::position
- io::empty
- io::repeat
- io::sink
- panic::Location::caller
- panic::Location::file
- panic::Location::line
- panic::Location::column
- Stabiliseeritud
osad vÔimalustest, mida saab kasutada Webassembly (WASM) vaheformaati kompileerimisel. - Kolmandat toetust on rakendatud aarch64-apple-visionos, aarch64-apple-visionos-sim ja riscv32ima-unknown-none-elf platvormidele. Kolmas tase eeldab pÔhitoetust, kuid ilma automatiseeritud testimise, ametlike vÀljundite avaldamise ja koodi kompileerimise kontrollimise vÔimaluseta.
- Teist taset toetust on rakendatud sihtplatvormidele aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm. Teine tase eeldab kompileerimise garanteerimist.
Samuti kuulutas Rust Foundation, mis juhib Rusti keele ökosĂŒsteemi, vĂ€lja 'Safety-Critical Rust Consortium' - konsortsiumi, mille eesmĂ€rk on kasutada Rusti keelt lahendustes, mis nĂ”uavad kĂ”rget usaldusvÀÀrsust (Safety-Critical Software), milles rike vĂ”ib ohustada inimeste elu, kahjustada keskkonda vĂ”i pĂ”hjustada tĂ”siseid seadme kahjustusi. Konsortsiumiga liitusid sellised ettevĂ”tted nagu ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle ja Woven by Toyota. Konsortsiumi ĂŒlesannete hulka kuulub juhendite kirjutamine ning raamatukogude, linterside ja staatiliste analizaatide vĂ€ljatöötamine, samuti usaldusvÀÀrsuse formaalse verifikatsiooni meetodite rakendamine ja keele alameetodite arendamine kĂ”rge usaldusvÀÀrsusega sĂŒsteemide jaoks.
KĂ”rge usaldusvÀÀrsusega sĂŒsteemidega seotud projektide seas vĂ”ib vĂ€lja tuua Verus - tööriista, mis kontrollib Rusti keeles kirjutatud koodi korrektsust. Kontroll toimub, mÀÀratledes spetsifikatsiooni, mis kirjeldab koodi lubatud kĂ€itumist. KĂ€ituvate koodide kĂ€igus Verus kontrollib spetsifikatsiooni vastavust, et kinnitada töö korrektust.
Allikas: opennet.ru
