Vydání programovacího jazyka Rust 1.68

Bylo zveřejněno vydání univerzálního programovacího jazyka Rust 1.68, 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 a úložiště crates.io stabilizovaly podporu protokolu Sparse, který definuje nový způsob práce s indexem, který odráží dostupné verze všech balíčků existujících v úložišti. Nový protokol umožňuje výrazně zvýšit rychlost práce s crates.io a vyřešit problémy se škálováním s dalším růstem počtu balíčků v úložišti.

    Aby se snížilo zpoždění způsobené stahováním úplného indexu, Sparse namísto přístupu k indexu pomocí Git zahrnuje přímé stahování pouze nezbytných dat indexu přes HTTPS, které pokrývají závislosti konkrétního projektu. K poskytování indexových dat se používá nová služba index.crates.io. Ve výchozím nastavení se nový protokol plánuje používat ve větvi Rust 1.70 a předtím, abyste jej povolili, můžete nastavit proměnnou prostředí "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" nebo přidat parametr 'protocol =' do "[registries. crates-io]" v souboru .cargo/config.toml 'sparse'.

  • Přidáno makro „pin!“, které umožňuje vytvořit strukturu Pin<&mut T> z výrazu „T“ s lokálním připnutím jeho stavu (na rozdíl od Box::pin nealokuje paměť na haldě, ale váže na úrovni zásobníku).
  • Byl navržen výchozí obslužný program chyb alokace paměti, který se používá při použití standardního balíčku alokace. Aplikace, které povolují pouze alloc (bez std), budou nyní volat obslužnou rutinu „panic!“, když alokace paměti selže, což může být volitelně zachyceno pomocí „#[panic_handler]“. Programy používající knihovnu std budou nadále tisknout informace o chybě do stderr a zhroutí se.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • {core,std}::pin::pin!
    • impl Od za {f32,f64}
    • std::cesta::MAIN_SEPARATOR_STR
    • impl DerefMut pro PathBuf
  • Atribut „const“, který určuje možnost jeho použití v libovolném kontextu místo konstant, je použit ve funkci VecDeque::new.
  • Pro práci na platformě Android je nyní potřeba alespoň NDK r25 (API 19), tzn. Minimální podporovaná verze Androidu byla zvýšena na 4.4 (KitKat).
  • Třetí úroveň podpory byla implementována pro platformu Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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.

Zdroj: opennet.ru

Přidat komentář