UtgÄvan av Rust 1.92. Rust-projekt för GUI, sandbox-isolering och skapande av firmware.

Utgivningen av programmeringssprÄket Rust 1.92 har publicerats. Det grundades av Mozilla men utvecklas nu under delfinansiering av den oberoende, icke-vinstdrivande organisationen Rust Foundation. SprÄket fokuserar pÄ sÀker minneshantering och tillhandahÄller verktyg för att uppnÄ hög parallellism för uppgiftskörning, utan att anvÀnda en avfallshanterare eller runtime (runtime begrÀnsas till grundlÀggande initialization och underhÄll av standardbiblioteket).

Minneshanteringsmetoderna i Rust skyddar utvecklare frÄn att göra fel vid manipulering av pekare och skyddar mot problem som uppstÄr vid lÄg nivÄ minnesarbete, sÄsom att komma Ät minnesomrÄden efter att de har frigjorts, dereferera nullpekare, buffer overflow, etc. För distribution av bibliotek, byggande och hantering av projektberoenden utvecklas paketförvaltaren Cargo. För lagring av bibliotek stöds ett repository pÄ crates.io.

SÀker minneshantering sÀkerstÀlls i Rust under kompilering genom att kontrollera referenser, spÄra Àgandeskap över objekt, ta hÀnsyn till livslÀngden av objekt (synlighet) och utvÀrdera korrekt minnesÄtkomst under körning av koden. Rust erbjuder ocksÄ verktyg för att skydda mot heltalsöverflöden, krÀver obligatorisk initialisering av variabelvÀrden innan de anvÀnds, hanterar fel bÀttre i standardbiblioteket, tillÀmpar konceptet av oförÀnderliga (immutable) referenser och variabler som standard och erbjuder stark statisk typning för att minimera logiska fel.

Huvudsakliga nyheter:

  • Stabilisering av typen "never", som betecknas av symbolen "!" och definierar berĂ€kningar som aldrig returnerar vĂ€rden (till exempel returnerar funktionen "exits", makrot "panic!" och oĂ€ndliga loopar aldrig kontrollen). I den nya versionen har lint-kontrollerna "never_type_fallback_flowing_into_unsafe" och "dependency_on_unit_never_type_fallback" som standard vĂ€xlat frĂ„n att rapportera varningar till att generera kompilationsfel. Dessa kontroller utlöses vid problem i koden som uppstĂ„r vid anvĂ€ndning av typen "never".

    En preliminÀr bedömning visar att liknande problem förekommer i cirka 500 crate-paket. Aktivering av lint-kontroller kommer att förbereda för stabiliseringen av typen "never", som för nÀrvarande klassas som en experimentell funktion. Lint-kontroller utlöses endast vid direkt kompilering av paket och visas inte vid kompilering av beroenden. Kontroller kan ocksÄ stÀngas av med hjÀlp av attributet "#[allow]".

  • Beteendet för lint-kontrollen "unused_must_use" har Ă€ndrats, som utlöses nĂ€r ett returvĂ€rde frĂ„n en funktion ignoreras, om funktionen eller returtypen Ă€r markerad med attributet "#[must_use]". I den nya versionen upphörs varningar om att ignorera returvĂ€rden med typerna Result och ControlFlow, dĂ€r felstatusen bestĂ€ms av typen utan vĂ€rden ("!" eller "Infallible"). Till exempel, "fn can_never_fail() -> Result {
}".
  • Beteendet för flaggan "-Cpanic=abort" har förĂ€ndrats, nĂ€r den anges aktiveras som standard genereringen av unwind-tabeller för att utföra backtrace. För att Ă„tergĂ„ till det gamla beteendet finns alternativet "-Cforce-unwind-tables=no".
  • Kontrollen av argumenten för attributet «#[macro_export]» har skĂ€rpts. Nu kommer ett felmeddelande att visas istĂ€llet för en varning om ogiltiga attribut anges. Problem med «#[macro_export]» kommer att kontrolleras inte bara vid direkt sammansĂ€ttning av crate-paketet, utan Ă€ven vid sammanstĂ€llning av beroenden.
  • I sĂ€ker kod Ă€r det tillĂ„tet att fĂ„ raw-pekarna («&raw [mut | const]») pĂ„ fĂ€lt i union-typer.
  • För den mĂ„lplattformen mips64el-unknown-linux-muslabi64 har stöd för dynamisk lĂ€nkning implementerats.
  • Den minimi stödda versionen av externa verktyg LLVM har höjts till branch LLVM 20.
  • En ny uppsĂ€ttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
    • NonZero::div_ceil
    • Location::file_as_c_str
    • RwLockWriteGuard::downgrade
    • Box::new_zeroed
    • 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
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
    • impl Extend for proc_macro::TokenStream
  • Indikatorn "const" har tillĂ€mpats i funktioner:
    • ::rotate_left
    • ::rotate_right
  • I paketchefen Cargo har operationen «git fetch» sĂ€kerstĂ€llts att upprepas vid misslyckande av den första begĂ€ran. Komponenter för integration med terminalemulatorn Ghostty har lagts till. En ny kapitel om optimering av byggprocessen har lagts till i dokumentationen.

Man kan Àven nÀmna nyligen tillkÀnnagivna projekt och hÀndelser relaterade till Rust:

  • Företaget Ferrocene har meddelat att de har genomgĂ„tt certifiering enligt IEC 61508 (SIL 2) för biblioteket libcore, som inkluderar en delmĂ€ngd av anrop frĂ„n Rusts standardbibliotek. Certifieringen bekrĂ€ftar att biblioteket uppfyller kraven för kritiska industriella system. Ferrocene Ă€r kĂ€nd för att skapa verktyg för utveckling av applikationer för kritiska system (Safety-Critical Systems) pĂ„ Rust, samt för att upprĂ€tthĂ„lla FLS-specifikationen (Ferrocene Language Specification), som Ă€r basen för den referensspecifikation som utvecklas för sprĂ„ket Rust.
  • UtgĂ„van av biblioteket Iced 0.14 för att skapa grafiska anvĂ€ndargrĂ€nssnitt med hjĂ€lp av reaktiv programmeringsmodell har publicerats. I Iced har en arkitektur implementerats som Ă€r bekant för utvecklare som kĂ€nner till deklarativt grĂ€nssnittsbyggande med Elm. Det erbjuds en uppsĂ€ttning fĂ€rdiga widgets med möjlighet att skapa asynkrona hanterare och tillĂ€mpa adaptiv layout av grĂ€nssnittselement beroende pĂ„ fönster- och skĂ€rmstorlek. Flera renderingmotorer som stödjer Vulkan, Metal och DX12 tillhandahĂ„lls. Bland de större projekten som anvĂ€nder Iced kan arbetsmiljön COSMIC nĂ€mnas.

    Den nya versionen innehÄller widgets "table", "grid", "sensor", "float" och "pin", samt utökar funktionerna för widgeten som arbetar med Markdown-format. Implementerat: reaktiv rendering; scrollbar som visas vid behov; API för animationshantering; stöd för inmatningsmetoder; headless-lÀge; möjlighet att göra Àndringar utan att stoppa applikationen (hot reloading); parallell avkodning av bilder; verktyg för felsökning och prestandaövervakning.

  • Projektet Ribir utvecklar ett bibliotek för att skapa plattformsoberoende applikationer med grafiskt grĂ€nssnitt, vilket gör det möjligt att anvĂ€nda en gemensam kodbas för olika plattformar (Linux, Windows, macOS, planerat för Android och iOS). Ett deklarativt sprĂ„k för grĂ€nssnittsbygge baserat pĂ„ Rust-makron Ă€r tillgĂ€ngligt, tillsammans med över 20 widgets, teman och rendering baserad pĂ„ wgpu.
  • Verktyget Island har presenterats för isolerad körning av applikationer. För sandbox-isolering anvĂ€nds mekanismen Landlock. Island gör det möjligt att skapa regler i TOML-format och tillĂ€mpa dem för att isolera befintliga körbara filer med hjĂ€lp av Landlock, utan att Ă€ndra koden. Till skillnad frĂ„n Firejail krĂ€ver verktyget Island inga root-rĂ€ttigheter eller sĂ€rskilda behörigheter.
  • Google har lanserat Wasefire, ett verktyg för utveckling av sĂ€kra firmware som Ă€r skrivet i Rust. HuvudidĂ©n Ă€r att köra separata isolerade hanterare (applet) ovanpĂ„ den grundlĂ€ggande firmware-miljön (plattformen). Utvecklingen av firmware Ă€r inte bunden till programmeringssprĂ„k — firmware-komponenter kan levereras i WebAssembly-format med WASI (WebAssembly System Interface) och köras med hjĂ€lp av Wasmtime.
  • Utgivningen av UEFI-firmware Patina 18, skriven i Rust, har offentliggjorts. Patina erbjuder en ersĂ€ttning för de grundlĂ€ggande komponenterna i UEFI-firmware och kan anvĂ€ndas för en gradvis övergĂ„ng av existerande firmware, skrivna i C, till anvĂ€ndning av Rust.
  • Projektet Brimstone utvecklar en ny JavaScript-motor, skriven frĂ„n grunden i Rust. I nuvarande version stöds redan mer Ă€n 97 % av funktionerna i ECMAScript 2026. Virtuella maskinen för att köra bytecode Ă€r skapad med hĂ€nsyn till arkitekturen i motorerna V8.
  • Projektet Catten utvecklar en kĂ€rna för det experimentella operativsystemet CharlotteOS, skrivet i Rust. KĂ€rnan stödjer Ă„tkomstkontroll baserat pĂ„ "capability" (i likhet med Fuchsia) och anvĂ€nder en resurshierarki som liknar Plan 9 med filvĂ€gar adresserade via URI.
  • UtgĂ„van av den interaktiva kommandotolken Fish 4.2.0 (vĂ€nlig interaktiv skal) har publicerats. Grenen 4.x kĂ€nnetecknas av en fullstĂ€ndig översĂ€ttning av kodbasen frĂ„n C++ till Rust.
  • Företaget Cloudflare har öppnat koden för Rust-biblioteket tokio-quiche, för att integrera stöd för protokollen QUIC och HTTP/3 i asynkront fungerande applikationer baserade pĂ„ ramverket Tokio.
  • Projektet Tor har publicerat versionerna Arti 1.7 och 1.8, implementeringar av Tor-verktygsuppsĂ€ttningen, skriven i Rust. NĂ€r koden Arti nĂ„r en nivĂ„ som helt kan ersĂ€tta C-versionen, avser Tor-utvecklarna att ge Arti status som huvudimplementering av Tor och gradvis avbryta underhĂ„llet av C-implementeringen.

    Den nya versionen stabiliserar implementeringen av begrÀnsad upptÀckts av onion-tjÀnster med hjÀlp av klientautorisering ("restricted-discovery"). Utöver SOCKS-proxy har stöd för HTTP-proxy, som anvÀnder CONNECT-metoden, lagts till. Adaptiv tidsinstÀllning av timeouts har implementerats beroende pÄ belastningen. Experimentellt stöd för tokio-console har lagts till. Utvecklingen av funktionaliteten för relÀer och servrar behörigheter (Directory Authority) fortsÀtter. En ny kommando "arti hsc ctor-migrate" har lagts till för att överföra nycklar frÄn C-klienten till Arti:s nyckellager. InstÀllningar för att styra start av onion-tjÀnster har lagts till.

  • Den Rust-baserade databasen RustDB har publicerats, skapad med inspiration frĂ„n PostgreSQL. GrundlĂ€ggande SQL-operationer stödjs (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transaktioner, MVCC, WAL (Write-Ahead Log), indexering, anslutning via PostgreSQL-kompatibel protokoll. AI anvĂ€ndes vid skrivandet av RustDB.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster