Rust 1.76 programmeerimiskeele väljalase

Avaldatud on Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all välja töötatud üldotstarbelise programmeerimiskeele Rust 1.76 väljalase. Keel keskendub mälu ohutusele ja pakub vahendeid töö kõrge paralleelsuse saavutamiseks, vältides samal ajal prügikoguja ja käitusaja kasutamist (käitusaeg lüheneb standardse teegi põhikäivitamise ja hoolduseni).

Rusti mälukäsitlusmeetodid säästavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mälukäsitluse tõttu tekkivate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, järkude pakkumiseks ja sõltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse jälgimise, objektide eluea (ulatuse) jälgimise ja mälule juurdepääsu õigsuse hindamise kaudu koodi täitmise ajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Peamised uuendused:

  • Dokumentatsioonile on lisatud eraldi osa, mis kirjeldab erinevate argumenditüüpide ja funktsioonide tagastustüüpide ühilduvust ABI tasandil. Võrreldes varasemate versioonidega on ABI-ühilduvus nüüd garanteeritud tüüpide "char" ja "u32" puhul, millel on identsed suurused ja joondused.
  • Lisaks varem saadaolevale kutsungile "any::type_name:: ()", mis tagastab parameetris "T" määratud tüübi stringikirjelduse, on täiendatud funktsiooniga "type_name_of_val(&T)", mis võimaldab teil hankida tüübiteavet mis tahes nimetu 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!("`{iter_name}` summa on {sum}."); } Väljund on: `core::array::iter::IntoIter` summa `on 6.
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • Arc::unwrap_or_clone
    • Rc::unwrap_or_clone
    • Tulemus::inspect
    • Tulemus::inspect_err
    • Valik::inspect
    • väärtuse_tüübi_nimi
    • std::hash::{DefaultHasher, RandomState}
    • ptr::{viitest_saada, mutidest_saada}
    • ptr::adr_eq
  • 3. taseme tugi on rakendatud platvormidele {x86_64,i686}-win7-windows-msvc, aarch64-apple-watchos, arm64e-apple-ios ja arm64e-apple-darwin. 3. tase pakub põhituge, kuid ilma automaatse testimise, ametlike versiooniuuenduste või versioonide verifitseerimiseta.

Lisaks väärib märkimist eksperimentaalse scx_rustlandi ülesannete ajastaja demonstratsioon, mis on kirjutatud Rustis ja käivitatud kasutajaruumis. Ülesannete ajastamise loogika on kernelist kasutajaruumi viidud sched-ext tööriistakomplekti abil, mis kasutab BPF-i. Ajastaja on optimeeritud interaktiivsete ülesannete prioriseerimiseks protsessorimahukate ülesannete ees. Näiteks kerneli ehitamise ajal mängurakenduse käivitamise testis saavutas scx_rustlandi ajastaja mängus kõrgema kaadrisageduse (FPS) kui tavaline EEVDF-ajastaja.

Allikas: opennet.ru

Ostke DDoS-kaitsega saitide jaoks usaldusväärne hostimine, VPS VDS-serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster