Vydán Rust 1.92. Projekty Rust pro grafické uživatelské rozhraní, sandboxing a vývoj firmwaru.

Programovací jazyk Rust 1.92, založený projektem Mozilla, ale nyní vyvíjený pod záštitou nezávislé neziskové organizace Rust Foundation, byl vydán. Jazyk se zaměřuje na bezpečnost paměti a poskytuje nástroje pro dosažení vysokého paralelismu provádění úloh, a to bez použití garbage collectoru a runtime prostředí (runtime prostředí 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:

  • Typ „never“, označený symbolem „!“ a definující výpočty, které se nikdy nevrací (například funkce „exits“, makro „panic!“ a nekonečné smyčky, které se nikdy nevrací), se nadále stabilizoval. V nové verzi byly kontroly Lint „never_type_fallback_flowing_into_unsafe“ a „dependency_on_unit_never_type_fallback“ ve výchozím nastavení přepnuty z varování na generování chyb kompilace. Tyto kontroly se spouštějí, když jsou při použití typu „never“ zjištěny problémy v kódu.

    Podle předběžných odhadů existují podobné problémy v přibližně 500 balíčcích crate. Povolení kontrol lint pomůže připravit se na stabilizaci typu „never“, což je v současné době považováno za experimentální funkci. Kontroly lint se spouštějí pouze při přímém sestavování balíčků a neovlivňují sestavení závislostí. Lze je také zakázat pomocí atributu „#[allow]“.

  • Chování lint kontroly „unused_must_use“, která se spustí, když je návratová hodnota funkce ignorována, pokud je funkce nebo návratový typ označen atributem „#[must_use]“, bylo změněno. Nová verze již negeneruje varování o ignorování návratových hodnot pro typy Result a ControlFlow, kde je chybový stav určen typem bez hodnot („!“ nebo „Infallible“). Například „fn can_never_fail() -> Result<(), Infallible> {…}“.
  • Chování příznaku „-Cpanic=abort“, který při zadání povoluje výchozí generování tabulek pro zpětné trasování, bylo změněno. Pro návrat k předchozímu chování je k dispozici možnost „-Cforce-unwind-tables=no“.
  • Ověřování argumentů atributu „#[macro_export]“ bylo zpřísněno. Zadání neplatných atributů nyní povede k chybě namísto varování. Problémy s „#[macro_export]“ budou kontrolovány nejen během přímého sestavení balíčku crate, ale také během sestavení závislostí.
  • V bezpečném kódu je povoleno získávat nezpracované ukazatele („&raw [mut | const]“) na pole v typech sjednocení.
  • Pro cílovou platformu mips64el-unknown-linux-muslabi64 byla implementována podpora dynamického linkování.
  • Minimální podporovaná verze externího toolchainu LLVM byla zvýšena na větev LLVM 20.
  • Nová část API byla přesunuta do kategorie stabilní, včetně metod a implementací vlastností byly stabilizovány:
    • Nenulové ::div_ceiling
    • Umístění::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zered
    • Box::new_zeroed_slice
    • Rc::new_zeroed
    • Rc::new_zeroed_slice
    • Arc::new_zeroed
    • Arc::new_zeroed_slice
    • btree_map::Entry::insert_entry
    • btree_map::VacantEntry::insert_entry
    • Rozšíření implikace pro proc_macro::TokenStream
    • Rozšíření implikace pro proc_macro::TokenStream
    • Rozšíření implikace pro proc_macro::TokenStream
    • Rozšíření implikace pro proc_macro::TokenStream
  • Znak „const“ se používá ve funkcích:
    • <[_]>::rotate_left
    • <[_]>::otote_right
  • Správce balíčků Cargo nyní opakuje pokus o příkaz „git fetch“, pokud první požadavek selže. Byly přidány komponenty pro integraci s terminálovým emulátorem Ghostty. Do manuálu byla přidána nová kapitola o optimalizaci procesu sestavení.

Dále bychom rádi zdůraznili nedávno oznámené projekty a události související s Rustem:

  • Společnost Ferrocene oznámila certifikaci IEC 61508 (SIL 2) pro svou knihovnu libcore, která obsahuje podmnožinu volání ze standardní knihovny Rust. Tato certifikace potvrzuje shodu knihovny s požadavky pro kritické průmyslové systémy. Společnost Ferrocene je známá vytvářením sad nástrojů pro vývoj aplikací Rust pro bezpečnostně kritické systémy (SCS) a udržováním specifikace jazyka Ferrocene (FLS), která slouží jako základ pro referenční specifikaci Rust.
  • Byla vydána knihovna Iced 0.14 pro vytváření grafických uživatelských rozhraní pomocí reaktivního programovacího modelu. Iced implementuje architekturu známou vývojářům obeznámeným s deklarativním jazykem rozhraní Elm. Nabízí hotovou sadu widgetů s možností vytvářet asynchronní obslužné rutiny a aplikovat adaptivní rozvržení prvků rozhraní na základě velikosti okna a obrazovky. K dispozici je několik renderovacích enginů s podporou Vulkan, Metal a DX12. Mezi hlavní projekty využívající Iced patří desktopové prostředí COSMIC.

    Nová verze přidává widgety „table“, „grid“, „sensor“, „float“ a „pin“ a také rozšířené možnosti widgetů pro práci s Markdownem. Byly implementovány následující funkce: režim reaktivního vykreslování; posuvníky, které se zobrazují v případě potřeby; animační API; podpora vstupních metod; režim headless; možnost provádět změny bez zastavení aplikace (hot reloading); paralelní dekódování obrázků; a nástroje pro ladění a profilování výkonu.

  • Projekt Ribir vyvíjí knihovnu pro vytváření multiplatformních aplikací s grafickým rozhraním, která umožňuje použití jedné společné kódové základny aplikace k vytváření grafických aplikací pro různé platformy (Linux, Windows, macOS, v plánech Android (a iOS). K dispozici je deklarativní jazyk rozhraní založený na makrech Rust, více než 20 widgetů, šablon a vykreslování založené na wgpu.
  • Představujeme Island, utilitu určenou pro spouštění aplikací v sandboxu. Využívá mechanismus Landlock pro sandboxing. Island umožňuje vytvářet pravidla ve formátu TOML a aplikovat je na existující spustitelné soubory Landlock bez nutnosti jakýchkoli změn kódu. Na rozdíl od Firejailu Island nevyžaduje root oprávnění ani žádná speciální oprávnění.
  • Společnost Google představila Wasefire, sadu nástrojů založenou na Rustu pro vývoj bezpečného firmwaru. Hlavní myšlenkou je spouštět samostatné, izolované obslužné programy (applety) nad podkladovým firmwarovým prostředím (platformou). Vývoj firmwaru je jazykově nezávislý – komponenty firmwaru lze dodávat jako WebAssembly s rozšířeními WASI (WebAssembly System Interface) a spouštět pomocí Wasmtime.
  • Patina 18, UEFI firmware napsaný v Rustu, byl vydán. Patina poskytuje náhradu za základní komponenty UEFI firmwaru a lze ji použít k postupné migraci stávajícího firmwaru napsaného v jazyce C do Rustu.
  • Projekt Brimstone vyvíjí nový JavaScriptový engine, napsaný od nuly v Rustu. Jeho současná podoba již podporuje přes 97 % funkcí ECMAScript 2026. Virtuální stroj pro spouštění bajtkódu je založen na architektuře enginu V8.
  • Projekt Catten vyvíjí jádro pro experimentální operační systém CharlotteOS, napsané v Rustu. Jádro podporuje řízení přístupu založené na schopnostech (podobně jako Fuchsia) a používá distribuovanou hierarchii zdrojů podobnou Plan 9, s cestami k souborům adresovanými pomocí URI.
  • Byl vydán interaktivní shell Fish 4.2.0 (uživatelsky přívětivý interaktivní shell). Větev 4.x je pozoruhodná kompletní migrací kódové základny z C++ do Rustu.
  • Soundflare zpřístupnil knihovnu Rust od Tokio-Quic s otevřeným zdrojovým kódem pro integraci podpory QUIC a HTTP/3 do asynchronních aplikací založených na frameworku Tokyo.
  • Projekt Tor vydal Arti 1.7 a 1.8, implementaci nástrojů Tor v jazyce Rust. Jakmile kódová základna Arti dosáhne úrovně schopné zcela nahradit implementaci v jazyce C, vývojáři Toru hodlají učinit z Arti primární implementaci Toru a postupně ukončit údržbu implementace v jazyce C.

    Nová verze stabilizuje implementaci omezeného zjišťování pro cibulové služby pomocí autorizace klienta („restricted-discovery“). Kromě SOCKS proxy byla přidána podpora pro HTTP proxy pomocí metody CONNECT. Byly implementovány adaptivní časové limity v závislosti na zátěži. Byla přidána experimentální podpora pro tokio-console. Vývoj funkcionality pro relé a servery Adresáře (autorita adresářů). Přidán příkaz „arti hsc ctor-migrate“ pro migraci klíčů z klienta C do úložiště klíčů Arti. Přidána nastavení pro správu spouštění onion služeb.

  • Byl vydán RustDB, systém pro správu databází (DBMS) inspirovaný PostgreSQL a napsaný v Rustu. Podporuje základní SQL operace (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transakce, MVCC, WAL (Write-Ahead Log), indexy a konektivitu prostřednictvím protokolu kompatibilního s PostgreSQL. RustDB byl vyvinut s využitím umělé inteligence.

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster