Vydání programovacího jazyka Rust 1.67

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

  • Pro asynchronní funkce s Future::Output je nyní možné zadat anotace „#[must_use]“, které obsahují varování, pokud je vrácená hodnota ignorována, což pomáhá identifikovat chyby způsobené předpokladem, že funkce změní hodnoty místo vrácení nové hodnoty. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } varování: nepoužitý výstup budoucnosti vrácený `bar`, který musí být použit —> src/lib.rs:5:5 | 5 | bar().čekat; | ^^^^^^^^^^^^ | = note: `#[warn(unused_must_use)]` ve výchozím nastavení zapnuto
  • Byla aktualizována implementace front FIFO std::sync::mpsc (multi-producer single-consumer), která byla převedena na použití modulu crossbeam-channel při zachování předchozího API. Nová implementace se vyznačuje řešením řady problémů, vyšším výkonem a zjednodušenou údržbou kódu.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {celé číslo}::ilog
    • {celé číslo}::ilog2
    • {celé číslo}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribut "const", který určuje možnost jeho použití v libovolném kontextu místo konstant, se používá ve funkcích:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Třetí úroveň podpory byla implementována pro použití Rust v linuxovém jádře (linuxkernel), stejně jako pro Sony PlayStation 1 (mipsel-sony-psx), PowerPC s AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformy qnx710, x86_64-pc-nto-qnx710). 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.

Navíc si můžeme všimnout, že ARM zveřejnilo opravy, které umožňují použití jazyka Rust k vývoji ovladačů a modulů jádra Linuxu sestavených pro systémy založené na architektuře AArch64.

Zdroj: opennet.ru

Přidat komentář