Avalikustatud on üldotstarbelise programmeerimiskeele Rust 1.76 versioon, mis põhines Mozilla projektist, kuid on nüüd arendatud sõltumatu mittetulundusühingu Rust Foundationi juhtimise all. Keel keskendub mäluhalduse ohutusele ja pakub vahendeid kõrge tööde paraleliseerimise saavutamiseks, ilma et oleks vaja kasutada prügikoristajat ja runtime'i (runtime koosneb põhinitialiseerimisest ja standardraamatukogu hooldamisest).
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:
- Dokumentatsiooni on lisatud eraldi jaotis, mis kirjeldab erinevate argumenditüüpide ja funktsioonide tagastatavate väärtuste tüüpide ABI taseme ühilduvust. võrreldes varasemate versioonidega, on tagatud ABI taseme ühilduvus tüüpide "char" ja "u32" vahel, mis on sama suuruse ja joondumisega.
- Lisaks varem saadaval olnud funktsioonile «any::type_name::()», mis tagastab tekstikirjelduse tüübi kohta, mis on määratud parameetriga «T», on lisatud funktsioon «type_name_of_val(&T)», mis võimaldab saada teavet tüübi kohta mis tahes nimetamata viite põhjal. fn get_iter() -> impl Iterator { [1, 2, 3].into_iter() } fn main() { let iter = get_iter(); let iter_name = std::any::type_name_of_val(&iter); let sum: i32 = iter.sum(); println!("The sum of the `{iter_name}` is {sum}."); } Tulemuseks saame: The sum of the `core::array::iter::IntoIter` is 6.
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tüüpide rakendused:
- Arc::unwrap_or_clone
- Rc::unwrap_or_clone
- Result::inspect
- Result::inspect_err
- Option::inspect
- type_name_of_val
- std::hash::{DefaultHasher, RandomState}
- ptr::{from_ref, from_mut}
- ptr::addr_eq
- Tugitehnoloogia kolmas tase on ellu viidud platvormide {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios ja arm64e-apple-darwin jaoks. Kolmas tase hõlmab aluse toetust, kuid ilma automatiseeritud testimise, ametlike versioonide avaldamise ja koodi kompileerimise kontrollimiseta.
Lisaks võib märkida Rusti keeles kirjutatud katseülesannete ajakava scx_rustland demonstreerimist, mis töötab kasutajaruumis (ülesannete ajakava loogika viimine tuumast kasutajaruumi on teostatud sched-ext tööriistadega, mis kasutavad BPF-i). Ajakava on optimeeritud interaktiivsete ülesannete prioriteedi tõstmiseks, võrreldes CPU-d intensiivselt koormavate ülesannetega. Näiteks mängu rakenduse käivitamise testis koos tuuma kompileerimisega võimaldas scx_rustland ajakava saavutada mängus kõrgemat FPS-i kui standardse EEVDF ajakava kasutamisel.
Allikas: opennet.ru
