Rust 1.79 on vĂ€lja antud. Rusti kĂ”rge usaldusvÀÀrsuse sĂŒsteemide arendamiseks on loodud konsortsium

Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.79 vĂ€ljaanne, mis pĂ”hineb Mozilla projektist, kuid mida arendab nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keel keskendub mĂ€luga ohutule tööle ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, ilma et oleks vaja prĂŒgi kogujaid ja jooksutamisnumbrit (runtime piirdub algettevalmistusega ja standardraamatukogu hooldamisega).

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:

  • On lisatud inline-konstandi tugi, mida saab otse koodis mĂ€rkida 'const { 
 }' plokkide abil, mida töödeldakse konstandite kontekstis ja mis vĂ”imaldavad teha ilma eraldiseisva konstandi mÀÀratlemiseta. 'const { 
 }' plokis mÀÀratud kood arvutatakse kompileerimise ajal ja seda kasutatakse konstandina, ilma et programm selle kĂ€igus tĂ€idetaks. Erinevalt konstandite mÀÀratlemisest vĂ€ljendiga 'const ITEM: 
 = 
', ei ole 'const { 
 }' plokkides vajalik tĂŒĂŒbi nĂ€itamine, kuna nendes toetatakse automaatset tĂŒĂŒbi tuvastamist. NĂ€iteks kood eraldi mÀÀra konstandiga

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

    vÔib asendada otse kasutamisega:

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

  • SĂŒntaks «T: Trait» stabiliseeritud, et mÀÀrata piirangud assotsiatiivsetes tĂŒĂŒpides, vĂ”imaldades lĂŒhendada sisemiste piirangute mÀÀratlemise vĂ€ljendeid, mis varem nĂ”udsid sisemist impl Trait vĂ”i mitmeid tingimusi «where».
  • Automaatne ajavahemike pikendamine ajutiste vÀÀrtuste puhul, mida kasutatakse «match» ja «if» konstruktsioonides, on tagatud.

    let a = if true {
    ..;
    &temp() // aeg pikeneb
    } else {
    ..;
    &temp() // aeg pikeneb
    };

  • Stabiliseeritud funktsiooni main importimise vĂ”imalus teistelt moodulitelt ja crate-paketilt.
  • Standardsest teegist kogumise ajal kasutusel lipp «-Cforce-frame-pointers=yes», mis lisab andmeid steki rekonstrueerimiseks programmide profiilimise ajal.
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide 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
  • Konstantse mĂ€rgendiga `const`, mis mÀÀrab vĂ”imaluse kasutada konstandina igas kontekstis, 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
    osad vÔimalustest, mida saab kasutada Webassembly (WASM) vaheformaati kompileerimisel.
  • Kolmandat toetust on rakendatud aarch64-apple-visionos, aarch64-apple-visionos-sim ja riscv32ima-unknown-none-elf platvormidele. Kolmas tase eeldab pĂ”hitoetust, kuid ilma automatiseeritud testimise, ametlike vĂ€ljundite avaldamise ja koodi kompileerimise kontrollimise vĂ”imaluseta.
  • Teist taset toetust on rakendatud sihtplatvormidele aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm ja x86_64-pc-windows-gnullvm. Teine tase eeldab kompileerimise garanteerimist.

Samuti kuulutas Rust Foundation, mis juhib Rusti keele ökosĂŒsteemi, vĂ€lja 'Safety-Critical Rust Consortium' - konsortsiumi, mille eesmĂ€rk on kasutada Rusti keelt lahendustes, mis nĂ”uavad kĂ”rget usaldusvÀÀrsust (Safety-Critical Software), milles rike vĂ”ib ohustada inimeste elu, kahjustada keskkonda vĂ”i pĂ”hjustada tĂ”siseid seadme kahjustusi. Konsortsiumiga liitusid sellised ettevĂ”tted nagu ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle ja Woven by Toyota. Konsortsiumi ĂŒlesannete hulka kuulub juhendite kirjutamine ning raamatukogude, linterside ja staatiliste analizaatide vĂ€ljatöötamine, samuti usaldusvÀÀrsuse formaalse verifikatsiooni meetodite rakendamine ja keele alameetodite arendamine kĂ”rge usaldusvÀÀrsusega sĂŒsteemide jaoks.

KĂ”rge usaldusvÀÀrsusega sĂŒsteemidega seotud projektide seas vĂ”ib vĂ€lja tuua Verus - tööriista, mis kontrollib Rusti keeles kirjutatud koodi korrektsust. Kontroll toimub, mÀÀratledes spetsifikatsiooni, mis kirjeldab koodi lubatud kĂ€itumist. KĂ€ituvate koodide kĂ€igus Verus kontrollib spetsifikatsiooni vastavust, et kinnitada töö korrektust.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster