Udgivelse af Rust 1.99.0. Microsoft har gjort Rust til et primært sprog.

Rust 1.99, udviklet af Mozilla og nu drevet af den uafhængige nonprofitorganisation Rust Foundation, er blevet udgivet. Sproget fokuserer på sikker hukommelsesstyring og giver værktøjer til høj parallellisme i udførelsen af opgaver, samtidig med at det undgår brugen af en garbage collector og runtime (runtime begrænser sig til grundlæggende initialisering og vedligeholdelse af standardbiblioteket).

Metoderne til hukommelseshåndtering i Rust har til formål at eliminere fejl i forbindelse med manipulation af pegepunkter og beskytte mod problemer der opstår ved lavniveau hukommelseshåndtering, såsom adgang til hukommelse efter den er frigivet, de-referering af nulpegepunkter, overskridelse af buffergrænser osv. For distribution af biblioteker, sikring af bygning og håndtering af projektafhængigheder, udvikles pakkehåndteringssystemet Cargo. For placering af biblioteker understøttes et repository på 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:

  • Der er nu mulighed for at oprette variadic funktioner i Rust, der kan eksporteres til projekter, der bruger C (C ABI). Som det sidste parameter i sådanne funktioner kan konstruktionen „…“ angives, som håndteres i Rust ved hjælp af den specielle type VaList, der fungerer på samme måde som va_list i C. unsafe extern «C» fn sum(mut args: …) -> i32 { let a = unsafe { args.next_arg::<i32>() }; let b = unsafe { args.next_arg::<i32>() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Funktionerne Layout::for_value_raw, mem::size_of_val_raw og mem::align_of_val_raw er stabiliseret, hvilket gør det muligt at bestemme størrelse og alignment ud fra rå pekere (raw pointer) på en sikker måde, herunder for typer med dynamisk størrelse, som f.eks. skiver, uden at skulle oprette referencer til data.
  • Dokumentationen indeholder nu en anbefaling om at undgå at frigive hukommelse, som er opnået gennem en statisk reference med ubegribent levetid (&’static) ved at kalde Box::leak (round-trip unleaking), da denne handling potentielt kan føre til problemer på grund af inkompatibilitet med fremtidige kompilatoroptimeringer og tilknyttede hukommelsesallokeringsmekanismer. I stedet for at oprette en statisk reference til midlertidig overførsel af ejerskab, anbefales det at bruge rå pekere, for eksempel ved at kalde Box::into_non_null.
  • En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af traits:
    • IntoIterator for Box<[T; N]>
    • IntoIterator for &Box<[T; N]>
    • IntoIterator for &mut Box<[T; N]>
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator for StepBy<I>
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • I pakkeshop-systemet cargo er der blevet implementeret en ny indbygget profil "debug", som svarer til "dev"-profilen (i fremtiden planlægger man at adskille mulighederne for afdebugning og udvikling). Ved CI-kompilering er inkrementel kompilering som standard deaktiveret.
  • Den målrettede platform riscv64-unknown-linux-musl er blevet flyttet til det andet supportniveau, hvilket indebærer en garanti for kompilering, men uden garanti for beståelse af testpakken.

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

  • Microsoft har opgraderet Rust til førstelinje-sprog og vil give fuld støtte til det i alle udviklingsfaser inden for virksomheden. Tidligere blev førstelinjestøtte kun givet til sprog som C++, C# og TypeScript. Det bemærkes, at Rust allerede bruges i over 100 Microsoft-repositorier. Blandt andet bliver Rust-komponenter allerede anvendt i produkter som Microsoft 365 og Copilot, og der er udviklet en separat backend for Rust, rustc_codegen_utc, baseret på MSVC-compiler.

    Som det primære mål med Rust-implementeringen i Microsoft nævnes styrkelsen af kodebeskyttelse i sikkerhedskritiske aspekter. Ifølge den tekniske direktør for Microsoft Azure skyldes omkring 70% af alle sårbarheder i Windows problemer med hukommelsen, som kan undgås ved brug af Rust.

  • Google har fjernet den gamle implementering af mekanismen til inter-process kommunikation Binder fra Linux-kernen, skrevet i C, til fordel for den nye Binder IPC-driver, der er omskrevet i Rust. Det bemærkes, at den gamle driver, der har eksisteret i 15 år, har akkumuleret betydelig teknisk gæld og komplekser, hvilket har besværliggjort fejlretning, vedligeholdelse og tilføjelse af nye funktioner. Binder IPC-driveren i Rust er nu anerkendt som den primære og præsenteres ikke længere som et eksperimentelt projekt.
  • Version 2.7.0 af Arti, en implementering af Tor-værktøjets, skrevet i Rust, er blevet offentliggjort. Når Arti-koden når et niveau, der fuldstændig kan erstatte C-versionen, har Tor-udviklerne til hensigt at give Arti status som den primære implementering af Tor og gradvist at stoppe vedligeholdelsen af C-implementeringen. Den nye version har udviklet funktionaliteten for relæer. servere directory authority, der er relateret til dokumentparsing, understøttelse af spejling af servere og behandling af DNS-trafik. RPC-implementering til ændring og kontrol af konfiguration er tilføjet. Flere sårbarheder er blevet rettet — administratorer af onion-tjenester anbefales at opdatere deres systemer omgående.

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