Vydaný Rust 1.79. Na vývoj vysoko spoľahlivých systémov v Ruste bolo vytvorené konzorcium

Bol vydaný univerzálny programovací jazyk Rust 1.79, založený projektom Mozilla, ale teraz vyvinutý pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti úloh, pričom sa vyhýba používaniu zberača odpadu a runtime (beh je zredukovaný na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy spracovania pamäte Rustu chránia vývojára pred chybami pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú v dôsledku nízkoúrovňového spracovania pamäte, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, poskytovanie zostáv a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.

Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu, sledovania životnosti objektov (rozsahov) a hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.

Hlavné inovácie:

  • Pridaná podpora pre inline konštanty, ktoré je možné špecifikovať priamo v kóde pomocou blokov „const { ... }“, spracovaných v kontexte konštánt a umožňujúcich zaobísť sa bez samostatnej definície konštánt. Kód špecifikovaný v bloku „const { ... }“ sa vypočíta vo fáze kompilácie a použije sa ako konštanta bez vykonania počas behu programu. Na rozdiel od definovania konštánt prostredníctvom výrazu „const ITEM: ... = …“ v blokoch „const { ... }“ nemusíte špecifikovať typ, pretože podporujú automatické odvodzovanie typu. Napríklad kód so samostatnou definíciou konštanty

    const EMPTY: Možnosť >=Žiadne;
    nech foo = [PRÁZDNY; 100];

    možno nahradiť lokálnym použitím:

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

  • Stabilizovaná syntax "T: Trait". » na určenie obmedzení na pozícii asociatívneho typu, čo vám umožní skrátiť definíciu výrazov s obmedzeniami vnoreného typu, ktoré predtým vyžadovali špecifikovanie vnorenej vlastnosti impl alebo viacerých podmienok „kde“.
  • Poskytuje sa automatické predĺženie životnosti dočasných hodnôt použitých v konštrukciách „zhoda“ a „ak“.

    nech a = ak je pravda {
    ...;
    &temp() // životnosť sa predĺži
    } Else {
    ...;
    &temp() // životnosť sa predĺži
    };

  • Možnosť importovať hlavnú funkciu z iných modulov a balíkov prepraviek bola stabilizovaná.
  • Pri zostavovaní štandardnej knižnice kompilátor používa príznak „-Cforce-frame-pointers=yes“, ktorý pridáva údaje na rekonštrukciu zásobníka počas profilovania programu.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • {integer}::unchecked_add
    • {integer}::unchecked_mul
    • {integer}::unchecked_sub
    • <[T]>::split_at_unchecked
    • <[T]>::split_at_mut_unchecked
    • <[u8]>::utf8_chunks
    • str::Utf8Chunks
    • str::Utf8Chunk
    • <*const T>::is_aligned
    • <*mut T>::je_zarovnané
    • NonNull::is_aligned
    • <*const [T]>::len
    • <*mut [T]>::len
    • <*const [T]>::je_prázdny
    • <*mut [T]>::je_prázdny
    • NonNull::<[T]>::is_empty
    • CStr::count_bytes
    • io::Chyba::downcast
    • num::Nenulové
    • cesta::absolútna
    • proc_macro::Literal::byte_character
    • proc_macro::Doslovný::c_string
  • Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa vo funkciách:
    • Atomic*::into_inner
    • io::Kurzor::new
    • io::Kurzor::get_ref
    • io::Kurzor::pozícia
    • io::prázdne
    • io::opakujte
    • io::umývadlo
    • panika::Umiestnenie::volajúceho
    • panika::Umiestnenie::súbor
    • panika::Umiestnenie::linka
    • panika::Umiestnenie::stĺpec
  • Stabilizované
    časť schopností, ktoré možno použiť pri kompilácii do prechodnej reprezentácie Webassembly (WASM).
  • Tretia úroveň podpory bola implementovaná pre platformy aarch64-apple-visionos, aarch64-apple-visionos-sim a riscv32ima-unknown-none-elf. Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania, zverejňovania oficiálnych verzií alebo kontroly, či je možné kód zostaviť.
  • Bola implementovaná druhá úroveň podpory pre cieľové platformy aarch64-pc-windows-gnullvm, i686-pc-windows-gnullvm a x86_64-pc-windows-gnullvm. Druhá úroveň podpory zahŕňa záruku montáže.

Okrem toho Rust Foundation, ktorá dohliada na jazykový ekosystém Rust, oznámila vytvorenie Safety-Critical Rust Consortium, zameraného na používanie jazyka Rust v riešeniach vyžadujúcich zvýšenú spoľahlivosť (Safety-Critical Software), kde zlyhanie môže ohroziť ľudský život. , poškodiť životné prostredie alebo spôsobiť vážne poškodenie zariadenia. Ku konzorciu sa pripojili ARM, AdaCore, Ferrous Systems, OxidOS, Synopsys, HighTec EDV-Systeme GmbH, TrustInSoft, Veecle a Woven by Toyota. Medzi úlohy, ktoré bude konzorcium riešiť, patrí písanie manuálov a vývoj knižníc, linterov a statických analyzátorov, ako aj používanie metód formálneho overovania spoľahlivosti a vývoj jazykových podmnožín pre vysoko spoľahlivé systémy.

Medzi projektmi týkajúcimi sa vysoko spoľahlivých systémov je možné zaznamenať Verus - súpravu nástrojov na kontrolu správnosti kódu napísaného v jazyku Rust. Overenie sa vykonáva definovaním špecifikácie, ktorá popisuje prijateľné správanie kódu. Počas vykonávania spustiteľného kódu Verus kontroluje špecifikáciu, aby zabezpečil správnu činnosť.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster