Väljaanne Rust 1.79. Loodi konsortsium kõrgjõudlusega süsteemide arendamiseks Rustis

On välja antud üldotstarbelise programmeerimiskeele Rust 1.79 versioon, mis põhineb Mozilla projektidel, kuid mida arendab nüüd sõltumatu mittetulundusühing Rust Foundation. Keel keskendub mälutehnoloogiate ohutusele ja pakub vahendeid ülesannete kõrge paralleelsuse saavutamiseks, ilma et oleks vajalik prügikoristaja ja runtime (runtime piirdub põhi-initsialiseerimise ja standardraamatukogu hooldamisega).

Mäluga töötamise meetodid Rust'is vabastavad arendajad pointerite manipulatsiooni vigadest ja kaitsevad neid probleemide eest, mis tulenevad madala taseme mälu haldamisest, nagu mälualale pärast selle vabastamist juurdepääs, null-pointerite dereferentseerimine, puhverserveri piiridest väljumine jne. Raamatukogude levitamiseks, kokkupaneku tagamiseks ja sõltuvuste haldamiseks arendatakse paketihaldurit Cargo. Raamatukogude majutamiseks toetatakse repoturite crates.io.

Mäluhügieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jälgimise, objektide eluaja (vaateala) arvestamise ja mälule juurdepääsu korrektuse hindamise kaudu koodi täitmise ajal. Rust pakub ka vahendeid täisarvude ülevoolude vältimiseks, nõuab muutujate väärtuste kohustuslikku initsialiseerimist enne kasutamist, käsitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mõistet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tüüpimist loogiliste vigade vähendamiseks.

Peamised uuendused:

  • Lisatud on inline-konstandi tugi, mida saab otse koodis määrata blokis «const { … }», mis töödeldakse konstandina ja võimaldab vältida eraldi konstandite määratlemist. Blokis «const { … }» esitatud kood arvutatakse kompileerimise etapis ja kasutatakse konstantsena, ilma et seda teostataks programmi töötamise ajal. Erinevalt konstantide määratlemisest väljendi «const ITEM: … = …» abil, ei pea blokkides «const { … }» määrama tüüpi, kuna need toetavad automaatset tüübi väljavõtmist. Näiteks kood koos eraldi konstandi määratlemisega

    const EMPTY: Option<Vec> = None;
    let foo = [EMPTY; 100];

    võib asendada kohapeal kasutamisega:

    let foo = [const { None }; 100];

  • Stabiliseeritud süntaks «T: Trait» assotsiatiivse tüübi piirangute määramiseks, mis võimaldab lühendada keerukate tüüpide piirangute määratlust, mis varem nõudsid sisseveetud impl Trait'i või mitu tingimust «where».
  • Tagatud on ajavahemike automaatne pikendamine ajutiste väärtuste puhul, mida kasutatakse konstruktsioonides «match» ja «if».

    let a = if true {
    ..;
    &temp() // eluiga pikendatakse
    } else {
    ..;
    &temp() // eluiga pikendatakse
    };

  • Stabiliseeritud on main funktsiooni importimine teistest moodulitest ja crate-pakettidest.
  • Standardraamatukogu kompileerimise ajal kasutatavas kompilaatoris on kasutusel lipp «-Cforce-frame-pointers=yes», lisades andmeid steki rekonstrueerimiseks programmide profileerimise ajal.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tüübispetsiifikatsioonide 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
  • Märge «const», mis määrab võimaluse kasutada igas kontekstis konstantide asemel, 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
    osa funktsioonidest, mida saab kasutada veebikogumi vaheversioonide (Webassembly, WASM) koostamisel.
  • Viidud ellu kolmas toetusaste aarch64-apple-visionos, aarch64-apple-visionos-sim ja riscv32ima-unknown-none-elf platvormide jaoks. Kolmas aste tähendab baas toetust, kuid ilma automatiseeritud testide, ametlike kogude väljaandmise ja koodi koostamise võimaluse kontrollita.
  • Viidud ellu teine toetusaste sihtplatvormide aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm jaoks. Teine toetusaste toob endaga kaasa garantii koostamsie.

Lisaks teatas Rust Foundation, mis kureerib Rusti keele ökoloogiat, «Safety-Critical Rust Consortium» loomisest, mille eesmärk on kasutada Rusti keelt lahendustes, mis nõuavad kõrget usaldusväärsust (Safety-Critical Software), kus rike võib ohustada inimelu, kahjustada keskkonda või põhjustada tõsiseid seadmete kahjustusi. Konsortsiumiga liitusid ettevõtted ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle ja Woven by Toyota. Konsortsiumi ülesannete hulka kuulub juhiste kirjutamine, teekide ja lintide ning staatiliste analüsaatorite väljatöötamine, samuti usaldusväärsuse formaalse tõestamise meetodite rakendamine ja keele alakomplektide väljatöötamine kõrge usaldusväärsusega süsteemide jaoks.

Kõrge usaldusväärsusega süsteemide abil loetletud projektidest on Verus - tööriist Rusti keeles kirjutatud koodi õigsuse kontrollimiseks. Kontroll toimub spetsifikatsiooni määratlemise kaudu, mis kirjeldab koodi lubatud käitumist. Käideldava koodi täitmise ajal kontrollib Verus spetsifikatsiooni vastavust, et kinnitada töö õigsust.

Allikas: opennet.ru

Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid 🔥 Osta usaldusväärne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster