Avaldatud on programmeerimiskeele Rust 1.88, mis põhineb Mozilla projektist, kuid nüüd arendab seda sõltumatu mittetulundusühing Rust Foundation. Keele fookus on mälu ohutu käsitlemine ja see pakub vahendeid ülesannete kõrge paralleelsuse saavutamiseks, samas kui see ei kasuta prügikoristajat ega runtime'i (runtime piirdub põhialustamise ja standardraamatukogu haldamisega).
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:
- Lisatud on võimalus kasutada mitmeid „let” avaldisi tingimuslikes plokkides „if” ja „while”, kasutades nende ühendamiseks operaatorit „&&” (loogiline JA). „Let” avaldised võivad olla kombineeritud boolean’i tingimuslike avaldistega. Tegurid, mis on deklareeritud let-avaldises, on kasutatavad järgmistes tingimuslikes avaldises ning ka „if” ja „while” plokkides. if let Channel::Stable(v) = release_info() && let Semver { major, minor, .. } = v && major == 1 && minor == 88 {
- Lisatud on «paljaste» funktsioonide kirjutamise toetus, mis on tähistatud aattribuudiga «#[unsafe(naked)]» ja sisaldavad ühte kutset «naked_asm!». Selliste funktsioonide jaoks puuduvad kompilaatori genereeritud epiloog ja proloog, mis annab arendajale täieliku kontrolli funktsiooni külge kinnitatud abikoodide üle («paljas» funktsioon sisaldab ainult arendaja määratud assembleri juhiseid ning ei hõlma kompilaatori juurde lisatud argumendi ja tagastatavate väärtuste erikäitlejaid). «Paljas» funktsioon on mugavam alternatiiv funktsioonidele, mis on määratletud plokis «global_asm!». #[unsafe(naked)] pub unsafe extern «sysv64» fn wrapping_add(a: u64, b: u64) -> u64 { core::arch::naked_asm!( «add rax, rdi, rsi», «ret» ); }
- Predikaatide keeles, mida rakendatakse tingimusliku kompileerimise atribuutides «cfg» ja «cfg_attr» (mis võimaldavad lisada või välja lülitada koodijuppe sõltuvalt määratud tingimustest), on lisatud tugi boolean literal’itele «true» ja «false», mis on seotud konfiguratsioonidega, mis on alati sisse lülitatud või alati välja lülitatud. Need literal’id võivad samuti olla kasutatud makros «cfg!» ja tabelites «[target]» manfestides ja Cargo konfiguratsioonides. Väljendeid cfg(true) ja cfg(false) võib kasutada cfg(all()) ja cfg(any()) asemel, et oma kavatsusi selgemalt väljendada.
- Pakihaldur Cargo sisaldab automaatset prügikoguja käivitamist kasutaja kodukatalogi vahemälu puhastamiseks. Varasemad vahemälus säilitatud pakid koos laaditavate sõltuvustega ei olnud puhastatud, mis viis pideva kettaruumi kasutuse kasvu. Aktiivne prügikoguja mehhanism eemaldab automaatselt välise crate-faili, millele ei ole ligi pääsetud üle 3 kuu, ja kohalikult paigaldatud crate-failid, millele ei ole ligi pääsetud üle kuu. Vahemälu puhastamist ei käivitata, kui crage’is kasutatakse valikuid «—offline» või «—frozen».
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
- Cell::update
- impl Default for *const T
- impl Default for *mut T
- mod ffi::c_str
- HashMap::extract_if
- HashSet::extract_if
- hint::select_unpredictable
- proc_macro::Span::line
- proc_macro::Span::column
- proc_macro::Span::start
- proc_macro::Span::end
- proc_macro::Span::file
- proc_macro::Span::local_file
- ::as_chunks
- ::as_rchunks
- ::as_chunks_unchecked
- ::as_chunks_mut
- ::as_rchunks_mut
- ::as_chunks_unchecked_mut
- Märkus 'const' rakendatud funktsioonides:
- NonNull::replace
- ::replace
- std::ptr::swap_nonoverlapping
- Cell::replace
- Cell::get
- Cell::get_mut
- Cell::from_mut
- Cell::as_slice_of_cells
- Eemaldatud sihtplatvormi i686-pc-windows-gnu esimene tugi.
Samuti tasub märkida Rustiga seotud sündmused:
- Munal OS projekt arendab eksperimentaalset operatsioonisüsteemi, mis on kirjutatud Rustis ja põhineb unikernel kontseptsioonil. Munal OS-is ei kasutata sunnitud multitegumtööd, mäluleheküljendust ega virtuaalset aadressiruumi (kasutatakse UEFI mälu kaardistamist). Tuum ja rakendused töötavad ühes aadressiruumis, kasutades WASM-i isoleerimise mudeli põhjal loodud turvamudelit (sealhulgas on sisse ehitatud wasmi mootor rakenduste käitamiseks WebAssembly baidikoodina).
Operatsioonisüsteem on varustatud graafilise kasutajaliidese ja toetab juhtimist klaviatuuri ja hiire kaudu. Graafiliste rakenduste arendamiseks on saadaval kohandatud tööriistakomplekt koos vidinate raamatukoguga. Võrgus suhtlemiseks pakutakse TCP-protokollide komplekti ja võrkahela draivereid. Munal OS-i jaoks saadaval olevate rakenduste hulka kuuluvad: veebibrauser, mis toetab baasi HTML-i ja HTTPS-i, tekstiredaktor ning terminal Pythoniga koodi täitmiseks. Kood on avatud MIT litsentsi alusel.

- Ilmus Asterinas 0.15.2 tuum, mis on kirjutatud Rustis ja pakub Linuxi tuuma ABI-ga ühilduvust. Tuum toetab x86-64 ja RISC-V arhitektuure ning implementib 206 368-st Linuxi süsteemikutsest. Arenduses osaleb 45 arendajat, peamiselt erinevatest Hiina ülikoolidest. Tuum on üles ehitatud "framekernel" arhitektuurile, kus tuumakomponendid on paigutatud ühisesse aadressiruumi, ning turvalisus saavutatakse turvalise koodi ja võimaliku küberturbe probleemide koodi loogilise eristamise tasemel. Kõik süsteemikutsed, failisüsteemid ja draiverid teostatakse OS Services tasemel ning ei saa sisaldada unsafe plokke. Kood on litsentseeritud MPL 2.0 alusel.
- Linuxi tuumade jaoks on ette valmistatud tööriist rsched, mis võimaldab analüüsida ülesande planeerija tööstatistikat. Praktiliselt võimaldab tööriist hinnata planeerija otsuseid, mis on seotud protsessidele ressursside pakkumisega, ning jälgida plaanimise käigus tekkivaid viivitusi. Andmete kogumiseks tuumas kasutatakse BPF alamsüsteemi, samas kui kasutusruumis töötav tööriistakood on kirjutatud Rustis. Tööriista autor on Chris Mason, Btrfsi failisüsteemi looja ja peaarhitekt.
- Ettevõte Collabora teatas, et on välja töötanud Rusti keele jaoks Coccinelle'i tööriista variandi. Coccinelle on algselt mõeldud Linuxi tuuma C-koodile automaatsete otsingute ja transformatsioonide teostamiseks. Muudatused määratakse reeglite kujul, mis meenutavad abstraktseid patše, mis ei ole seotud konkreetse positsiooniga koodis.
- GNOME arendajad esitlesid Rusti keeles kirjutatud glycin pildilaadimise teeki, mis tagab piltide dekodeerimise sandbox-isolatsiooni kaudu. Toetatakse dekodeeritud sisu edastamist gdk::Textures kaudu ja metaandmete väljavõtmist. Pakutakse mähiseid glycini kasutamiseks GTK4-s ning backend'i, et ühendada glycin GdkPixbuf kergetes, mida GNOME kasutab piltide laadimiseks. Glycin on juba integreeritud vaikimisi GNOME'i pildivaatesse Loupe. Samuti võimaldab GdkPixbuf backend glycini kasutamist GNOME Shellis, miniatuuri genereerijates ja igasugustes GNOME'i rakendustes, ilma nende programmide muutmiseta.
Allikas: opennet.ru

