Moe keele Rust 1.90 väljaanne, mille arendas välja Mozilla, kuid mida arendatakse nüüd sõltumatute mittetulundusühingute Rust Foundationi toetusel. Keel keskendub mälu ohutule kasutusele ja pakub vahendeid kõrge ülesannete paralleelsuse saavutamiseks, samas vältides prügikoristajat ja runtime’i (runtime koosneb ainult põhialustamisest ja standardraamatukogu haldamisest).
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:
- Linuxi x86_64 arhitektuuriga arvutitel kasutatakse crate-pakettide dünaamiliseks sidumiseks vaikimisi projekti LLVM LLD sidujat. LLD kasutamine on võrreldes BFD sidujaga parandanud suurte täidetavate failide ja suurte siluda teabe mahuga projektide sidumise jõudlust ning kiirendanud inkrementaalset uuesti kompileerimist. Enamasti on LLD tagasiühilduv BFD-ga. Probleemide korral on võimalik naasta BFD-le, seadistades keskkonnamuutuja RUSTFLAGS kaudu lipu „-C linker-features=-lld” või lisades .cargo/config.toml konfiguratsioonifaili: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
- Paketihalduris cargo on „publish” käsus rakendatud valik „—workspace”, mis võimaldab automaatselt avaldada kõik pakid valitud tööruumist (paketihulk, mis kasutab ühte Cargo.lock faili ning ühte ühise kogumise katalooge), säilitades pakettide järjekorra ja arvestades nendevahelisi sõltuvusi.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
- u{n}::checked_sub_signed
- u{n}::overflowing_sub_signed
- u{n}::saturating_sub_signed
- u{n}::wrapping_sub_signed
- impl Copy for IntErrorKind
- impl Hash for IntErrorKind
- impl PartialEq<&CStr> for CStr
- impl PartialEq<CString> for CStr
- impl PartialEq<Cow<CStr>> for CStr
- impl PartialEq for CString
- impl PartialEq for CString
- impl PartialEq<Cow> for CString
- impl PartialEq for Cow
- impl PartialEq for Cow
- impl PartialEq for Cow
- Märkus 'const' rakendatud funktsioonides:
- ::reverse
- f32::floor
- f32::ceil
- f32::trunc
- f32::fract
- f32::round
- f32::round_ties_even
- f64::floor
- f64::ceil
- f64::trunc
- f64::fract
- f64::round
- f64::round_ties_even
- Musl teekil põhinevatel sihtplatvormidel, mis on kolmanda toetuse tasemel, on vaikimisi lubatud dünaamiline sidumine: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl ja thumbv7neon-unknown-linux-musleabihf.
- Sihtplatvorm «x86_64-apple-darwin» on muudetud esimesest toetaseme tasemest teisele (Apple kavatseb lõpetada x86_64 arhitktuuri toote). Esimene toetaseme tase tähendab binaaride kogumist, põhjalikku testimist ja platvormi kõrgeima toetuse tagamist — iga muudatus kompilaatoris kontrollitakse täieliku testimis komplekti täitmise kaudu. Teise toetaseme taseme puhul tagatakse kogumine, kuid testimis komplekti läbimise osas ei anta garantiid.
Lisaks võib märkida, et Microsoft on arendanud Windowsi draiverite arendustööriistu Rust keeles. GitHubis on juba saadaval komplekt crate-pakette WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) ja UMDF (User-Mode Driver Framework) põhjaliste draiverite loomiseks, samuti Win32 teenuseid, mis on sobilikud Windows 11 kasutamiseks. Projekti eesmärk on pakkuda Rust keele arendajatele teeke ja funktsioone, mis on sarnased WDK-s pakutavatele C keeles olevatele draiverite arendustööriistadele. Praegusel arendusetapil kasutab Rust draiverite arendustööriist suurte probleemide vältimiseks palju unsafe-kõnesid Windowsi alamsüsteemidega suhtlemisel, kuid tulevikus plaanitakse ette valmistada ohutud abstraktsioonid tuumstruktuuride ja DDI (Device Driver Interface) jaoks. Projekti tulemused levitatakse MIT ja Apache 2.0 litsentside all.
Allikas: opennet.ru
