Vydání programovacího jazyka Rust 1.65

Bylo zveřejněno vydání univerzálního programovacího jazyka Rust 1.65, založeného projektem Mozilla, ale nyní vyvíjeného pod záštitou nezávislé neziskové organizace Rust Foundation. Jazyk se soustředí na bezpečnost paměti a poskytuje prostředky k dosažení vysokého paralelismu úloh a zároveň se vyhýbá použití garbage collectoru a runtime (runtime je redukováno na základní inicializaci a údržbu standardní knihovny).

Metody zpracování paměti Rust šetří vývojáře před chybami při manipulaci s ukazateli a chrání před problémy, které vznikají v důsledku nízkoúrovňového zpracování paměti, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení vyrovnávací paměti atd. Pro distribuci knihoven, poskytování sestavení a správu závislostí projekt vyvíjí správce balíčků Cargo. Úložiště crates.io je podporováno pro hostování knihoven.

Bezpečnost paměti je v Rustu zajištěna v době kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, sledování životnosti objektů (rozsahů) a hodnocení správnosti přístupu do paměti během provádění kódu. Rust také poskytuje ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, standardně aplikuje koncept neměnných referencí a proměnných, nabízí silné statické typování pro minimalizaci logických chyb.

Hlavní inovace:

  • Přidána podpora pro generické přidružené typy (GAT, Generic Associated Types), které umožňují vytvářet typové aliasy spojené s jiným typem a umožňují přidružit konstruktory typů k vlastnostem. vlastnost Foo { type Bar<'x>; }
  • Byl implementován výraz „let ... else“, který vám umožňuje zkontrolovat podmínku shody vzoru přímo ve výrazu „let“ a spustit libovolný kód, pokud se vzor neshoduje. let Ok(počet) = u64::from_str(count_str) else { panic!("Nelze analyzovat celé číslo: '{count_str}'"); };
  • Umožněte použití příkazu break k předčasnému ukončení pojmenovaných bloků pomocí názvu bloku (návěští) k identifikaci bloku, který má být ukončen. let result = 'blok: { do_thing(); if condition_not_met() { break 'blok 1; } udělat_další_věc(); if condition_not_met() { break 'blok 2; } udělat_poslední_věc(); 3};
  • Pro Linux byla přidána možnost samostatně ukládat informace o ladění (split-debuginfo), dříve dostupná pouze pro platformu macOS. Při zadání volby "-Csplit-debuginfo=unpacked" budou data debuginfo ve formátu DWARF uložena do několika samostatných objektových souborů s příponou ".dwo". Zadáním "-Csplit-debuginfo=packed" se vytvoří jeden balíček ve formátu ".dwp", který obsahuje všechna data debuginfo pro projekt. Chcete-li integrovat debuginfo přímo do sekce .debug_* objektů ELF, můžete použít volbu "-Csplit-debuginfo=off".
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • std::backtrace::Backtrace
    • Vázané::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribut „const“, který určuje možnost jeho použití v libovolném kontextu místo konstant, se používá ve funkcích <*const T&>::offset_from a <*mut T>::offset_from
  • V rámci závěrečné fáze přenosu implementace protokolu LSP (Language Server Protocol) do analyzátoru rzi byla zastaralá implementace serveru Rust Language Server (RLS) nahrazena stub serverem, který vydává varování s návrhem přejít na pomocí analyzátoru rzi.
  • Během kompilace je povolena podpora pro inline nasazení mezikódu MIR, což urychluje kompilaci typických balíčků přepravek o 3–10 %.
  • Pro urychlení plánovaných sestavení poskytuje správce balíčků Cargo třídění úloh čekajících na provedení ve frontě.

Kromě toho si můžete všimnout rozhovoru o použití jazyka Rust ve společnosti Volvo při vývoji komponent automobilových informačních systémů. V Rustu se neplánuje přepisování stávajícího a testovaného kódu, ale pro nový kód je Rust jednou z preferovaných možností, jak zlepšit kvalitu za nižší náklady. V automobilových sdruženích AUTOSAR (AUTomotive Open System ARchitecture) a SAE (Society of Automotive Engineers) byly vytvořeny pracovní skupiny související s používáním jazyka Rust.

David Kleidermacher, viceprezident pro inženýrství společnosti Google, navíc hovořil o překladu kódu používaného na platformě Android pro správu šifrovacích klíčů do jazyka Rust a také o použití Rust při implementaci protokolu DNS přes HTTPS v zásobníku. pro čipy UWB (Ultra-Wideband) a ve virtualizačním rámci (Android Virtualization Framework) spojeném s čipem Tensor G2. Nové stacky pro Bluetooth a Wi-Fi, přepsané v Rustu, jsou také vyvíjeny pro Android. Obecnou strategií je postupně posilovat zabezpečení, nejprve převedením nejzranitelnějších a životně důležitých softwarových komponent na Rust a poté rozšířením na další související subsystémy. V loňském roce byl jazyk Rust zařazen do seznamu jazyků povolených pro vývoj platformy Android.

Zdroj: opennet.ru

Přidat komentář