Lëshimi i Rust 1.79. U krijua një konsorcium për zhvillimin e sistemeve shumë të besueshme në Rust

Është publikuar versioni Rust 1.79, një gjuhë programimi e përgjithshme e zhvilluar nga projekti Mozilla, tani e zhvilluar nën mbikëqyrjen e një organizate të pavarur jo-fitimprurëse, Rust Foundation. Gjuha është fokusuar në sigurinë e operimit me memorie dhe ofron mjete për arritjen e një paralelizmi të lartë të ekzekutimit të detyrave, duke evituar përdorimin e mbledhësit të plehrave dhe kohës ekzekutimi (runtime që reduktohet në inicializimin bazë dhe mbështetje për bibliotekën standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.

Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.

Të rejat kryesore:

  • Është shtuar mbështetje për konstanta inline, të cilat mund të specifikohen drejtpërdrejt në kod duke përdorur blloqe «const { … }», të përpunuara në kontekstin e konstantës dhe që lejojnë të shmangin përcaktimin e veçantë të konstantave. Kodi i specifikuar në bllokun «const { … }» është llogaritur në fazën e kompilimit dhe përdoret si konstantë, pa u ekzekutuar gjatë funksionimit të programit. Për dallim nga përcaktimi i konstantave përmes shprehjes «const ITEM: … = …», në blloqet «const { … }» nuk është e nevojshme të specifikohet tipi, pasi ato mbështesin nxjerrjen automatik të tipeve. Për shembull, kodi me një 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» për caktimin e kufizimeve në pozitat e tipeve asociativë është stabilizuar, e cila lejon të shkurtosh përcaktimin e shprehjeve me kufizime të mbivendosura të tipit, të cilat më parë kërkonin përcaktimin e një impl Trait të brendshëm ose kushte të shumta «ku».
  • Është siguruar zgjatja automatike e jetës së vlerave të përkohshme që përdoren në konstruksionet «match» dhe «if».

    let a = if true {
    ..;
    &temp() // jeta do të zgjatet
    } else {
    ..;
    &temp() // jeta 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, kompajleri përdor flagun «-Cforce-frame-pointers=yes», i cili shton të dhëna për rindërtimin e stack-ut gjatë profilizimit të programeve.
  • Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
    • {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
  • Karakteristika «const», që përcakton mundësinë e përdorimit në çdo kontekst në vend të konstantave, është aplikuar në funksionet:
    • 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
  • Është stabilizuar
    një pjesë e mundësive që mund të përdoren gjatë kompilimit në përfaqësimin e ndërmjetëm Webassembly (WASM).
  • është realizuar niveli i tretë i mbështetjes për platformat aarch64-apple-visionos, aarch64-apple-visionos-sim dhe riscv32ima-unknown-none-elf. Niveli i tretë nënkupton mbështetje bazë, por pa testim të automatizuar, publikim të ndërtimeve zyrtare dhe verifikim të mundësisë së ndërtimit të kodit.
  • është realizuar niveli i dytë i mbështetjes për platformat e synuara aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm dhe x86_64-pc-windows-gnullvm. Niveli i dytë i mbështetjes nënkupton garanci të ndërtimit.

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», me qëllim përdorimin e gjuhës Rust në zgjidhje që kërkojnë besueshmëri të lartë (Safety-Critical Software), në të cilat dështimi mund të rrezikojë jetën e njerëzve, të dëmtojë ambientin ose të shkaktojë dëmtime serioze të pajisjeve. Konsorciumi është bashkuar nga kompanitë ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle dhe Woven by Toyota. Ndër detyrat që do të zgjidhë konsorciumi përfshihen shkruarja e udhëzimeve dhe zhvillimi i biblioteka, linternë dhe analiste statike, si dhe përdorimi i metodave të verifikimit formal të besueshmërisë dhe zhvillimi i nën-grupeve 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 kryhet përmes përcaktimit të specifikimit, i cili përshkruan sjelljen e lejuar të kodit. Gjatë ekzekutimit të kodit, Verus kontrollon përputhshmërinë me specifikimin për të konfirmuar saktësinë e funksionimit.

Burimi: opennet.ru

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster