Udgivelse af Rust 1.92. Rust-projekter til GUI, sandbox-isolering og oprettelse af firmware

Udgaven er version 1.92 af programmeringssproget Rust, oprindeligt udviklet af Mozilla, men nu videreudviklet under opsyn af den uafhængige nonprofitorganisation Rust Foundation. Sproget fokuserer på sikker hukommelsesbrug og giver midler til at opnå høj grad af parallel udførelse af opgaver, samtidig med at det undgår brugen af affaldsamler og runtime (runtime reduceres til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoder til hukommelsesarbejde i Rust befrier udviklere fra fejl ved manipulation af pekere og beskytter mod problemer, der opstår ved lavniveau håndtering af hukommelse, såsom adgang til hukommelsesområder efter frigivelse, dereferering af nulpekere, buffer-overløb osv. For distribution af biblioteker, byggeprocesser og afhængighedsstyring udvikles pakkehåndteringssystemet Cargo. For opbevaring af biblioteker understøttes repository'et crates.io.

Sikker håndtering af hukommelse sikres i Rust under kompilering ved referencekontrol, sporing af ejerskab af objekter, hensyntagen til livstid af objekter (synlighed) og vurdering af korrekt adgang til hukommelse under kodeudførelse. Rust tilbyder også midler til beskyttelse mod heltals-overløb, kræver obligatorisk initialisering af variabelværdier før brug, håndterer fejl bedre i standardbiblioteket, anvender konceptet med uforanderlige (immutable) referencer og variabler som standard og tilbyder stærk statisk typisering for at minimere logiske fejl.

Hovednyhederne:

  • Stabiliseringen af typen "never", betegnet med symbolet "!", fortsættes. Denne type definerer beregninger, der aldrig returnerer værdier (for eksempel returnerer funktioner som "exits", makroer som "panic!" og uendelige løkker aldrig kontrol). I den nye version er Lint-tjekene "never_type_fallback_flowing_into_unsafe" og "dependency_on_unit_never_type_fallback" som standard skiftet fra at give advarsler til at generere kompilationsfejl. Disse tjek aktiveres, når der opstår problemer i koden, der viser sig ved brug af typen "never".

    Ifølge foreløbige estimater er der lignende problemer i cirka 500 crate-pakker. Aktivering af lint-tjek vil hjælpe med at forberede stabiliseringen af typen "never", der i øjeblikket betragtes som en eksperimentel funktion. Lint-tjek aktiveres kun ved direkte samling af pakker og vises ikke ved samling af afhængigheder. Tjek kan også deaktiveres ved hjælp af attributten "#[allow]".

  • Adfærden af lint-tjekket "unused_must_use" er ændret, så det aktiveres ved ignorering af en funktions returværdi, hvis funktionen eller den returnerede type er markeret med attributten "#[must_use]". I den nye version stoppes advarsler om ignorering af returnerede værdier med typerne Result og ControlFlow, hvor fej tilstand bestemmes af typen uden værdier ("!" eller "Infallible"). For eksempel, "fn can_never_fail() -> Result {…}".
  • Adfærden for flaget "-Cpanic=abort" er ændret, hvor angivelse af dette now inkluderer generering af unwind-tabeller til backtrace som standard. For at returnere til den gamle adfærd er der en mulighed "-Cforce-unwind-tables=no".
  • Kontrollen af argumenter til attributten "#[macro_export]" er blevet strammet. Ved angivelse af ugyldige attributter vil der nu blive genereret en fejl i stedet for en advarsel. Problemer med "#[macro_export]" vil blive kontrolleret ikke kun ved direkte samling af crate-pakken, men også ved samling af afhængigheder.
  • I safe-koden er det tilladt at få raw-pegepinde («&raw [mut | const]») til felter i unionstyper.
  • Der er implementeret understøttelse for dynamisk linking til målplatformen mips64el-unknown-linux-muslabi64.
  • Den minimum understøttede version af den eksterne LLVM-værktøjspakke er hævet til LLVM 20-branch.
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af 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
  • Flagget «const» anvendt i funktionerne:
    • ::rotate_left
    • ::rotate_right
  • Cargo-pakkehåndteringssystemet har sikret, at operationen «git fetch» gentages ved fejl i det første anmodning. Der er tilføjet komponenter til integration med terminalemulatoren Ghostty. En ny kapitel om optimering af byggeprocessen er blevet tilføjet til vejledningen.

Der kan desuden nævnes nyligt annoncerede projekter og begivenheder relateret til Rust:

  • Firmaet Ferrocene har annonceret, at det har bestået certificeringen IEC 61508 (SIL 2) for biblioteket libcore, som inkluderer et subset af opkald fra Rusts standardbibliotek. Certificeringen bekræfter, at biblioteket opfylder kravene til kritisk vigtige industrielle systemer. Ferrocene er kendt for at skabe værktøjer til udvikling af applikationer til kritisk vigtige systemer (Safety-Critical Systems) på Rust samt vedligeholdelse af FLS-specifikationen (Ferrocene Language Specification), som udvikles som reference for Rust-sproget.
  • Udgivelsen af biblioteket Iced 0.14 til oprettelse af grafiske brugergrænseflader med reaktiv programmeringsmodel er offentliggjort. Iced implementerer en arkitektur, der er velkendt for udviklere, der er fortrolige med det deklarative grænsefladesprog Elm. Der tilbydes et færdigt sæt widgets med muligheden for at oprette asynkrone håndterere og anvende adaptive layout af grænsefladeelementer alt afhængig af vinduets og skærmens størrelse. Der gives flere tegne-motorer, der understøtter Vulkan, Metal og DX12. Blandt større projekter, der bruger Iced, kan nævnes skrivebordsmiljøet COSMIC.

    I den nye version er der tilføjet widgets «table», «grid», «sensor», «float» og «pin», samt udvidede muligheder for widgeten til at arbejde med Markdown markup. Implementeret: reaktiv rendering mode; rullelinjer, der vises efter behov; API til animation; støtte til inputmetoder; headless-tilstand; mulighed for at foretage ændringer uden at stoppe applikationen (hot reloading); parallelisering af billeddekodning; værktøjer til fejlfinding og performanceprofilering.

  • Projektet Ribir udvikler et bibliotek til oprettelse af tværplatformapplikationer med grafisk brugergrænseflade, som gør det muligt at bruge en fælles kodebase til at skabe grafiske applikationer til forskellige platforme (Linux, Windows, macOS, med planer om Android og iOS). Der er tilgængeligt et deklarativt sprog til oprettelse af grænseflader baseret på Rust-makroer, mere end 20 widgets, temaer og rendering baseret på wgpu.
  • Der blev præsenteret et værktøj kaldet Island, designet til isoleret kørsel af applikationer. Til sandbox-isolering anvendes Landlock-mekanismen. Island giver mulighed for at oprette regler i TOML-format og anvende dem til at isolere eksisterende eksekverbare filer ved hjælp af Landlock, uden at det er nødvendigt at ændre kode. I modsætning til Firejail kræver værktøjet Island ikke root-rettigheder og særlige beføjelser.
  • Google har præsenteret et på Rust baseret værktøj kaldet Wasefire til udvikling af sikre firmware. Hovedideen er at køre isolerede håndteringsprogrammer (applets) oven på det grundlæggende firmwaremiljø (platform). Firmwareudviklingen er ikke bundet til programmeringssprog – firmwarekomponenter kan leveres i WebAssembly-format med WASI (WebAssembly System Interface) udvidelser og udføres ved hjælp af Wasmtime.
  • Udgivelsen af UEFI-firmware Patina 18, skrevet i Rust, er offentliggjort. Patina giver en erstatning for de grundlæggende komponenter i UEFI-firmware og kan bruges til gradvist at overføre eksisterende firmware, der er skrevet i C, til at bruge Rust-sproget.
  • Projektet Brimstone udvikler en ny JavaScript-motor, skrevet fra bunden i Rust. Den nuværende version understøtter allerede mere end 97% af funktionerne i ECMAScript 2026. Den virtuelle maskine til udførelse af bytekode er designet med fokus på arkitekturen for V8-motoren.
  • Projektet Catten udvikler kernen til det eksperimentelle operativsystem CharlotteOS, der er skrevet i Rust. Kernen understøtter adgangsstyring baseret på "capability" (analogt med Fuchsia) og bruger en distributionshierarki for ressourcer, der ligner Plan 9, med filvejsadressering via URI.
  • Udgivelsen af den interaktive kommandoskaller Fish 4.2.0 (venlig interaktiv skal) er offentliggjort. 4.x-grenen er bemærkelsesværdig for den fuldstændige oversættelse af kodebasen fra C++ til Rust.
  • Virksomheden Cloudflare har åbnet kildekoden til Rust-biblioteket tokio-quiche for at integrere støtte til QUIC- og HTTP/3-protokoller i asynkront arbejdene applikationer baseret på Tokio-rammeværket.
  • Tor-projektet har offentliggjort versionerne Arti 1.7 og 1.8, implementationer af Tor-værktøjet skrevet i Rust. Når koden for Arti når et niveau, der kan erstatte C-versionen fuldstændigt, planlægger Tor-udviklerne at give Arti status som den primære Tor-implementering og gradvist stoppe vedligeholdelsen af C-implementationen.

    Den nye version stabiliserer implementeringen af begrænsede definitioner af onion-tjenester med klientautorisation ("restricted-discovery"). Udover SOCKS-proxyen er der tilføjet support for en HTTP-proxy, der bruger CONNECT-metoden. Adaptiv timeoutstyring baseret på belastning er implementeret. Eksperimentel støtte til tokio-console er blevet tilføjet. Fortsat udvikling af funktionaliteten for relay og servere direktorier (Directory Authority). Kommandoen "arti hsc ctor-migrate" er blevet tilføjet for at overføre nøgler fra C-klienten til Arti nøglelageret. Indstillinger til kontrol af opstart af onion-tjenester er blevet tilføjet.

  • Databasen RustDB er offentliggjort, skabt i Rust inspireret af PostgreSQL. Grundlæggende SQL-operationer understøttes (CREATE/DROP TABLE/VIEW, INSERT, SELECT, UPDATE, DELETE, SHOW TABLES, EXPLAIN, VACUUM), transaktioner, MVCC, WAL (Write-Ahead Log), indekser, tilslutning via PostgreSQL-kompatibel protokol. AI blev anvendt ved udviklingen af RustDB.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster