Lëshimi i Rust 1.79. U krijua një konsorcium për zhvillimin e sistemeve me besueshmëri të lartë në Rust

Është publikuar versioni 1.79 i gjuhës së programimit të përgjithshëm Rust, e cila është bazuar në projektin Mozilla, por tani po zhvillohet nën mbikëqyrjen e një organizate të pavarur jofitimprurëse, Rust Foundation. Gjuha fokusohet në sigurinë e menaxhimit të memories dhe ofron mjete për arritjen e një paralelizmi të lartë në ekzekutimin e detyrave, pa përdorur një mbledhës të plehrave dhe runtime (runtime reduktohet në inicializimin e bazës dhe në mbështetje të bibliotekës standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • Është shtuar mbështetje për konstanta inline, të cilat mund të specifikohen direkt në kod përmes blloqeve «const { … }», të cilat trajtohen në kontekstin e konstantave dhe lejojnë që të kaloni pa një përcaktim të veçantë të konstantave. Kodi i specifikuar në bllokun «const { … }» llogaritet në fazën e kompilimit dhe përdoret si një konstantë, pa u ekzekutuar gjatë punës së programit. Në kundërshtim me përcaktimin e konstantave përmes shprehjes «const ITEM: … = …», në blloqet «const { … }» nuk është e nevojshme të specifikoni tipin, pasi ato mbështesin вывод төрs автоматик. Për shembull, kodi me përcaktim të veçantë të konstantës

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

    mund të zëvendësohet me përdorim në vend:

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

  • Sintaksa «T: Trait» është stabilizuar për caktimin e kufizimeve në pozitën e tipit asocijativ, duke lejuar shkurtimin e përcaktimeve të shprehjeve me kufizime të ngulitura, të cilat më parë kërkonin specifikimin e një impl Trait të ngulitur ose disa kushte «where».
  • Është siguruar automatikisht zgjerimi i kohëzgjatjes së vlerave të përkohshme që përdoren në strukturat «match» dhe «if».

    let a = if true {
    ..;
    &temp() // koha e jetës do të zgjatet
    } else {
    ..;
    &temp() // koha e jetës do të zgjatet
    };

  • Është stabilizuar mundësia e importit të funksionit main nga module dhe paketat crate të tjera.
  • Gjatë ndërtimit të bibliotekës standarde në kompajler, është aktivizuar flamuri «-Cforce-frame-pointers=yes», që shton të dhëna për rindërtimin e stack-ut gjatë profilizimit të programeve.
  • Një grup i ri API u kalua në kategorinë e stabilizuar, përfshirë stabilizimin e metodave dhe implementimeve të trait-ëve:
    • {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
  • Atributi «const», që përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantëve, aplikohet në funksione:
    • 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
  • Stabilizuar
    një pjesë e mundësive që mund të përdoren gjatë kompilimit në përfaqësimin ndërmjetës Webassembly (WASM).
  • Krahasuar me mbështetje të tretë për platforma aarch64-apple-visionos, aarch64-apple-visionos-sim dhe riscv32ima-unknown-none-elf. Mbështetje e tretë nënkupton mbështetje bazë, por pa testim automatizuar, publikimin e ndërtimeve zyrtare dhe verifikimin e mundësisë për ndërtimin e kodit.
  • Krahasuar me mbështetje të dytë për platformat e synuara aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm dhe x86_64-pc-windows-gnullvm. Mbështetje e dytë nënkupton garanci për ndërtim.

Për më tepër, organizata Rust Foundation, e cila mbikëqyr ekosistemin e lidhur me gjuhën Rust, shpalli krijimin e konsorciumit "Safety-Critical Rust Consortium", i fokusuar në përdorimin e gjuhës Rust në zgjidhje që kërkojnë besueshmëri të lartë (Software të Rëndësishëm për Sigurinë), ku një dështim mund të rrezikonte jetën e njerëzve, të dëmtonte mjedisin ose të sillte dëmtime serioze në pajisje. Konsorciumi përfshin kompani si ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle dhe Woven nga Toyota. Ndër detyrat që do të zgjidhë konsorciumi, përmenden shkruajtja e udhëzimeve dhe zhvillimi i bibliotekave, linters dhe analizatorëve statikë, si dhe aplikimi i metodave të verifikimit formal të besueshmërisë dhe zhvillimi i nëngrupeve të gjuhës për sisteme me besueshmëri të lartë.

Nga projektet e lidhura me sistemet me besueshmëri të lartë, mund të përmendet Verus — një mjet për kontrollin e saktësisë së kodit të shkruar në gjuhën Rust. Kontrolli bëhet përmes përcaktimit të specifikimeve që përshkruajnë sjelljen e lejuar të kodit. Gjatë ekzekutimit të kodit, Verus kontrollon përputhshmërinë me specifikimet për të konfirmuar saktësinë e funksionimit.

Burimi: opennet.ru

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster