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 hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster