Vydání Rust 1.97. Vytvořené v Rustu jádro Zinnia a P2P systém Iroh s adresací podle klíčů

Byl zveřejněn release jazyka Rust 1.97, který byl původně vyvinut projektem Mozilla, ale nyní je rozvíjen pod záštitou nezávislé neziskové organizace Rust Foundation. Jazyk se zaměřuje na bezpečné nakládání s pamětí a poskytuje prostředky pro dosažení vysokého paralelismu při vykonávání úloh, přičemž se obejde bez využití garbage collectoru a runtime (runtime se omezuje na základní inicializaci a podporu standardní knihovny).

Metody manipulace s pamětí v Rustu se zaměřují na eliminaci chyb při manipulaci s ukazateli a poskytují ochranu proti problémům vyplývajícím z nízkoúrovňové práce s pamětí, jako je přístup k uvolněné oblasti paměti, dereference nulových ukazatelů, přetečení bufferu atd. Pro distribuci knihoven, zajištění sestavení a správu závislostí se vyvíjí balíčkový manažer Cargo. Pro ukládání knihoven je podporován repozitář crates.io.

Bezpečné manipulace s pamětí jsou v Rustu zajištěny během kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, zohlednění doby života objektů (viditelnosti) a hodnocení správnosti přístupu k paměti při vykonávání kódu. Rust také poskytuje prostředky pro 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ě, aplikuje koncept neměnnosti (immutable) referencí a proměnných ve výchozím nastavení a nabízí silnou statickou typizaci pro minimalizaci logických chyb.

Hlavní novinky:

  • Nově je ve výchozím nastavení aktivována nová schéma mangleování (mangling) názvů funkcí, globálních proměnných a datových struktur v generovaných objektových a spustitelných souborech (-Csymbol-mangling-version=v0). Názvy jsou manglovány, aby se zabránilo konfliktům při linkování různých programů, přičemž se k nim připojuje specifický kontext, jako je cesta k modulu a název crate balíčku.

    Dříve používané schéma mangleování názvů, založené na Itanium ABI, mělo některé nedostatky, jako např. nahrazování parametrů generik nečitelnými hashi a existenci částí kompilátoru, které Itanium ABI nevyužívaly, což vyžadovalo použití specifických Rust dekodérů názvů. Ve verzi Rust 1.97 je ve výchozím nastavení použito schéma mangleování, které bylo navrženo speciálně pro Rust a zbaveno uvedených nedostatků. Starou schéma plánují odstranit v některé z příštích verzí.

  • Do balíčkového správce cargo byla integrovaná možnost řízení reakce na generování varování kompilátorem při sestavování. Byla přidána proměnná prostředí CARGO_BUILD_WARNINGS, která může mít tři hodnoty: warn (výchozí) — výstup varování na obrazovku; allow — skrytí výstupu varování; deny — zpracování varování jako chyb, které zastaví sestavení.

    V minulých verzích bylo nutné pro dokončení sestavení po výstupu varování uvést "-Dwarnings" v RUSTFLAGS pro kompilátor, ale při změně RUSTFLAGS balíčkový správce cargo považoval sestavení za nové, nezohledňoval data v cache a znovu zkompiloval celý projekt. Přenesení nastavení na stranu cargo vyloučilo resetování cache a potřebu úplné rekompilace při změně režimu zpracování varování, a také zjednodušilo zapnutí zpracování varování jako chyb v systémech kontinuální integrace.

  • Při kompilaci jsou výchozí nastaveny možnosti zobrazování zpráv, které následují po linkeru. Zprávy se zobrazují ve formě varování prostřednictvím speciálního lint pravidla "linker_messages", které nepatří do běžné skupiny "warnings". Přitom rustc filtruje zprávy, které jsou typickými falešnými poplachy nebo normálním chováním, a ponechává varování, která mohou naznačovat problémy, jako jsou varování o zastaralých možnostech a nežádoucích nastaveních. Dříve se informace od linkeru zobrazovaly pouze v případě selhání, jinak byly všechny zprávy skryty. Pro návrat k předchozímu chování může být do Cargo.toml přidáno: [lints.rust] linker_messages = "allow"
  • Nová sada API byla převedena do stabilního stavu, včetně stabilizovaných metod a implementací typů:
    • Výchozí pro RepeatN
    • Kopírovat pro ffi::FromBytesUntilNulError
    • Odeslat pro std::fs::File pro UEFI
    • ::isolate_highest_one
    • ::isolate_lowest_one
    • ::highest_one
    • ::lowest_one
    • ::bit_width
    • NonZero::isolate_highest_one
    • NonZero::isolate_lowest_one
    • NonZero::highest_one
    • NonZero::lowest_one
    • NonZero::bit_width
  • Příznak "const" byl aplikován v metodě char::is_control.

Dodatečně lze zmínit nedávno oznámené projekty a akce spojené s Rust:

  • Projekt zinnia vyvíjí modulární unixové jádro, napsané v jazyce Rust a šířené pod licencí GPLv2. Jádro podporuje POSIX rozhraní a některá rozšíření z BSD a Linuxu, jako jsou epoll a timerfd. Pro vykreslování a organizaci vstupu jsou k dispozici ovladače DRM (Direct Rendering Manager) a evdev. Implementované funkce jsou dostatečné pro spuštění pracovní plochy Xfce na serveru X a kompozitního serveru Weston na bázi Wayland. Podporováno je zavádění jak v emulátoru QEMU, tak na skutečném zařízení, jako je notebook ThinkPad E14 G7.
  • Bylo uvedeno vydání komunikační knihovny iroh 1.0, která umožňuje vytvářet síťová spojení mezi aplikacemi na různých hostitelích s připojením pomocí kryptografických klíčů místo IP adress (uveden klíč, ke kterému je třeba se připojit a iroh najde s ním spojený hostitel a vytvoří šifrované spojení pomocí protokolu QUIC). Pokud je to možné, vytvářejí se přímá P2P spojení, ale pokud to není možné, spadne se na práci přes relé, která se také používají pro objevování hostitelů podle klíčů. Je možné spustit svůj vlastní relé nebo se připojit k veřejným relé doporučovaným komunitou.

    Mezi pokročilými funkcemi: podpora Multipath QUIC pro doručování paketů současně po více trasách, možnost fungování za NAT, režim statické konfigurace pro připojení k lokálním zařízením bez přístupu na internet, schopnost sestavovat do mezikódu WASM pro provádění v prohlížeči, podpora vytváření vlastních transportů, například pro připojení přes Bluetooth, WiFi Aware nebo LoRa. Kód je napsán v Rustu a je šířen pod licencemi Apache-2.0 a MIT. K dispozici jsou obálky pro Python, Node.js, Kotlin a Swift.

  • Autor serverové JavaScriptové platformy Bun zveřejnil článek s analýzou projektu přepisování Bun z jazyka Zig do Rustu pomocí AI modelu Claude Fable. Je zaznamenáno, že Bun 1.3.14 bude posledním vydáním na Zig a další verze Bun 1.4.0 již bude na Rustu. Podle provedených testů verze na Rustu spotřebovává výrazně méně paměti a je o 2-5 % rychlejší než verze na Zig. Velikost spustitelného souboru ve verzi na Rustu se zkrátila o 20 %.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster