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