Vydání programovacího jazyka Rust 1.62

Bylo zveřejněno vydání univerzálního programovacího jazyka Rust 1.62, 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:

  • Správce balíčků „cargo“ nabízí příkaz „add“, který umožňuje přidávat nové závislosti do manifestu Cargo.toml nebo měnit existující závislosti z příkazového řádku. Příkaz také umožňuje specifikovat jednotlivé funkce a verze, například: cargo add serde —funkce odvozují cargo add nom@5
  • Přidána možnost používat „#[derive(Default)]“ s výčty, ve kterých je výchozí možnost definována pomocí atributu „#[default]“. #[derive(Default)] enum Možná { #[výchozí] Nic, něco(T), }
  • Na platformě Linux je použita kompaktnější a rychlejší implementace synchronizačního mechanismu Mutex, založená na použití futexů poskytovaných linuxovým jádrem. Na rozdíl od dříve používané implementace založené na knihovně pthreads používá nová verze pro uložení stavu Mutex pouze 5 bajtů místo 40. Podobně byly na futex přeneseny zamykací mechanismy Condvar a RwLock.
  • Byla implementována druhá úroveň podpory pro cílovou platformu x86_64-unknown-none, navržená pro generování spustitelných souborů, které mohou fungovat bez operačního systému. Zadanou cílovou platformu lze například použít při psaní komponent jádra. Druhý stupeň podpory zahrnuje záruku montáže.
  • Třetí úroveň podpory byla implementována pro platformy aarch64-pc-windows-gnullvm a x86_64-pc-windows-gnullvm. Třetí úroveň zahrnuje základní podporu, ale bez automatického testování, publikování oficiálních sestavení nebo kontroly, zda lze kód sestavit.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • bool::tak_nějak
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::řádky
    • windows::CommandExt::raw_arg
    • impl výchozí hodnota pro AssertUnwindSafe
    • Z > pro Rc
    • Z > pro Arc<[u8]>
    • FusedIterator pro EncodeWide

    Zdroj: opennet.ru

Přidat komentář