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
