Programovací jazyk Rust 1.92, založený projektom Mozilla, ale teraz vyvíjaný pod záštitou nezávislej neziskovej organizácie Rust Foundation, bol vydaný. Jazyk sa zameriava na bezpečnosť pamäte a poskytuje nástroje na dosiahnutie vysokého paralelizmu vykonávania úloh, pričom sa zaobíde bez použitia garbage collectoru a runtime prostredia (runtime prostredie je redukované na základnú inicializáciu a údržbu štandardnej knižnice).
Metódy spracovania pamäte Rustu chránia vývojára pred chybami pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú v dôsledku nízkoúrovňového spracovania pamäte, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, poskytovanie zostáv a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.
Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu, sledovania životnosti objektov (rozsahov) a hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.
Hlavné inovácie:
- Typ „never“, označený symbolom „!“ a definujúci výpočty, ktoré sa nikdy nevracajú (napríklad funkcia „exits“, makro „panic!“ a nekonečné cykly, ktoré sa nikdy nevracajú), sa naďalej stabilizuje. V novej verzii boli kontroly Lint „never_type_fallback_flowing_into_unsafe“ a „dependency_on_unit_never_type_fallback“ štandardne prepnuté z varovania na generovanie chýb kompilácie. Tieto kontroly sa spúšťajú, keď sa pri použití typu „never“ zistia problémy v kóde.
Podľa predbežných odhadov existujú podobné problémy v približne 500 balíkoch crate. Povolenie kontrol lint pomôže pripraviť sa na stabilizáciu typu „never“, ktorý sa v súčasnosti považuje za experimentálnu funkciu. Kontroly lint sa spúšťajú iba pri priamom zostavovaní balíkov a neovplyvňujú zostavovania závislostí. Môžu byť tiež zakázané pomocou atribútu „#[allow]“.
- Správanie kontroly lint „unused_must_use“, ktorá sa spustí, keď sa návratová hodnota funkcie ignoruje, ak je funkcia alebo návratový typ označený atribútom „#[must_use]“, bolo zmenené. Nová verzia už negeneruje upozornenia o ignorovaní návratových hodnôt pre typy Result a ControlFlow, kde je chybový stav určený typom bez hodnôt („!“ alebo „Infallible“). Napríklad „fn can_never_fail() -> Result<(), Infallible> {…}“.
- Správanie príznaku „-Cpanic=abort“, ktorý po zadaní povoľuje predvolené generovanie tabuliek odvíjania pre spätné sledovanie, bolo zmenené. Pre návrat k predchádzajúcemu správaniu je k dispozícii možnosť „-Cforce-unwind-tables=no“.
- Overovanie argumentov atribútu „#[macro_export]“ bolo sprísnené. Zadanie neplatných atribútov teraz povedie k chybe namiesto upozornenia. Problémy s „#[macro_export]“ budú kontrolované nielen počas priameho zostavovania balíkov crate, ale aj počas zostavovania závislostí.
- V bezpečnom kóde je povolené získať surové ukazovatele („&raw [mut | const]“) na polia v zjednocovacích typoch.
- Pre cieľovú platformu mips64el-unknown-linux-muslabi64 bola implementovaná podpora dynamického linkovania.
- Minimálna podporovaná verzia externého nástroja LLVM bola zvýšená na vetvu LLVM 20.
- Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
- Nenulové ::div_ceiling
- Umiestnenie::file_as_c_str
- RwLockWriteGuard::downgrade
- Box::new_zeored
- Box::new_zeroed_slice
- Rc::new_zeoed
- Rc::new_zeroed_slice
- Arc::new_zeored
- Arc::new_zeroed_slice
- btree_map::Záznam::vložiť_záznam
- btree_map::VacantEntry::insert_entry
- Rozšíriť implementáciu pre proc_macro::TokenStream
- Rozšíriť implementáciu pre proc_macro::TokenStream
- Rozšíriť implementáciu pre proc_macro::TokenStream
- Rozšíriť implementáciu pre proc_macro::TokenStream
- Znak „const“ sa používa vo funkciách:
- <[_]>::otočiť_doľava
- <[_]>::otočiť_vpravo
- Správca balíčkov Cargo teraz znova skúša „git fetch“, ak prvá požiadavka zlyhá. Boli pridané komponenty pre integráciu s terminálovým emulátorom Ghostty. Do manuálu bola pridaná nová kapitola o optimalizácii procesu zostavovania.
Okrem toho by sme chceli zdôrazniť nedávno ohlásené projekty a udalosti súvisiace s Rustom:
- Spoločnosť Ferrocene oznámila certifikáciu IEC 61508 (SIL 2) pre svoju knižnicu libcore, ktorá obsahuje podmnožinu volaní zo štandardnej jadrovej knižnice Rust. Táto certifikácia potvrdzuje súlad knižnice s požiadavkami pre kritické priemyselné systémy. Spoločnosť Ferrocene je známa vytváraním nástrojov na vývoj aplikácií Rust pre bezpečnostne kritické systémy (SCS) a udržiavaním špecifikácie jazyka Ferrocene (FLS), ktorá slúži ako základ pre referenčnú špecifikáciu Rust.
- Bola vydaná knižnica Iced 0.14 na vytváranie grafických používateľských rozhraní pomocou reaktívneho programovacieho modelu. Iced implementuje architektúru známu vývojárom oboznámeným s deklaratívnym jazykom rozhrania Elm. Ponúka hotovú sadu widgetov s možnosťou vytvárať asynchrónne obslužné programy a aplikovať adaptívne rozloženie prvkov rozhrania na základe veľkosti okna a obrazovky. K dispozícii je niekoľko renderovacích enginov, ktoré podporujú Vulkan, Metal a DX12. Medzi hlavné projekty používajúce Iced patrí desktopové prostredie COSMIC.
Nová verzia pridáva widgety „tabuľka“, „mriežka“, „senzor“, „plavák“ a „pin“, ako aj rozšírené možnosti widgetov pre prácu s Markdownom. Boli implementované nasledujúce funkcie: reaktívny režim vykresľovania; posúvače, ktoré sa zobrazujú podľa potreby; animačné API; podpora vstupných metód; režim bez hlavičky; možnosť vykonávať zmeny bez zastavenia aplikácie (horúce opätovné načítanie); paralelné dekódovanie obrázkov; a nástroje na ladenie a profilovanie výkonu.
- Projekt Ribir vyvíja knižnicu na vytváranie multiplatformových aplikácií s grafickým rozhraním, ktorá umožňuje použitie jednej spoločnej kódovej základne aplikácie na vytváranie grafických aplikácií pre rôzne platformy (Linux, Windows, macOSv plánoch Android (a iOS). K dispozícii je deklaratívny jazyk rozhrania založený na makrách Rust, viac ako 20 widgetov, tém a vykresľovanie založené na wgpu.
- Predstavujeme Island, nástroj určený na spúšťanie aplikácií v sandboxe. Využíva mechanizmus Landlock pre sandboxing. Island umožňuje vytvárať pravidlá vo formáte TOML a aplikovať ich na existujúce spustiteľné súbory Landlock bez nutnosti akýchkoľvek zmien kódu. Na rozdiel od Firejailu Island nevyžaduje root oprávnenia ani žiadne špeciálne povolenia.
- Spoločnosť Google predstavila Wasefire, sadu nástrojov založenú na jazyku Rust na vývoj bezpečného firmvéru. Hlavnou myšlienkou je spúšťať samostatné, izolované obslužné programy (applety) nad základným prostredím (platformou) firmvéru. Vývoj firmvéru je jazykovo agnostický – komponenty firmvéru je možné dodávať ako WebAssembly s rozšíreniami WASI (WebAssembly System Interface) a spúšťať ich pomocou Wasmtime.
- Patina 18, UEFI firmvér napísaný v Ruste, bol vydaný. Patina poskytuje náhradu za základné komponenty UEFI firmvéru a možno ju použiť na postupnú migráciu existujúceho firmvéru napísaného v jazyku C do Rustu.
- Projekt Brimstone vyvíja nový JavaScriptový engine, napísaný od základov v jazyku Rust. Jeho súčasná podoba už podporuje viac ako 97 % funkcií ECMAScript 2026. Virtuálny stroj na vykonávanie bajtkódu je založený na architektúre enginu V8.
- Projekt Catten vyvíja jadro pre experimentálny operačný systém CharlotteOS, napísané v jazyku Rust. Jadro podporuje riadenie prístupu založené na schopnostiach (podobne ako Fuchsia) a používa distribuovanú hierarchiu zdrojov podobnú Plan 9, s cestami k súborom adresovanými pomocou URI.
- Bola vydaná Fish 4.2.0, užívateľsky prívetivý interaktívny shell. Vetva 4.x je pozoruhodná kompletnou migráciou kódovej bázy z C++ do Rust.
- Soundflare sprístupnil knižnicu Rust od Tokio-quiche s otvoreným zdrojovým kódom na integráciu podpory QUIC a HTTP/3 do asynchrónnych aplikácií založených na frameworku Tokyo.
- Projekt Tor vydal verzie Arti 1.7 a 1.8, implementáciu nástroja Tor v jazyku Rust. Akonáhle kódová základňa Arti dosiahne úroveň schopnú úplne nahradiť implementáciu v jazyku C, vývojári systému Tor plánujú urobiť z Arti primárnu implementáciu Tor a postupne ukončiť údržbu implementácie v jazyku C.
Nová verzia stabilizuje implementáciu obmedzeného objavovania pre služby Onion pomocou autorizácie klienta („restricted-discovery“). Okrem proxy SOCKS bola pridaná podpora pre HTTP proxy pomocou metódy CONNECT. Boli implementované adaptívne časové limity v závislosti od zaťaženia. Bola pridaná experimentálna podpora pre tokio-console. Vývoj funkcionality pre relé a serverov Adresáre (Authorita adresárov). Pridaný príkaz „arti hsc ctor-migrate“ na migráciu kľúčov z klienta C do úložiska kľúčov Arti. Pridané nastavenia na správu spúšťania služieb Onion.
- Bol vydaný RustDB, systém správy databáz (DBMS) inšpirovaný PostgreSQL a napísaný v jazyku Rust. Podporuje základné operácie SQL (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transakcie, MVCC, WAL (Write-Ahead Log), indexy a konektivitu prostredníctvom protokolu kompatibilného s PostgreSQL. RustDB bol vyvinutý s použitím umelej inteligencie.
Zdroj: opennet.ru
