Rust 1.99.0 utgitt. Microsoft har gjort Rust til et hovedspråk

Programmeringsspråket Rust 1.99, grunnlagt av Mozilla-prosjektet, men nå utviklet under ledelse av den uavhengige, ideelle organisasjonen Rust Foundation, er lansert. Språket fokuserer på minnesikkerhet og tilbyr verktøy for å oppnå høy parallellitet i oppgaveutførelsen, samtidig som det ikke bruker en søppelsamler og runtime (kjøretiden er redusert til grunnleggende initialisering og vedlikehold av standardbiblioteket).

Rusts minnehåndteringsmetoder er utformet for å eliminere feil i pekermanipulering og beskytte mot problemer som oppstår fra lavnivåminnehåndtering, for eksempel tilgang til minne etter at det har blitt frigjort, dereferanse av nullpekere, bufferoverløp og så videre. Prosjektet utvikler Cargo-pakkebehandleren for å distribuere biblioteker, legge til rette for bygg og administrere avhengigheter. crates.io-depotet vedlikeholdes for å være vert for biblioteker.

Minnesikkerhet er gitt i Rust på kompileringstidspunktet gjennom referansesjekking, holde styr på objekteierskap, holde styr på objektlevetider (scopes), og vurdere riktigheten av minnetilgang under kjøring av kode. Rust gir også beskyttelse mot heltallsoverløp, krever obligatorisk initialisering av variabelverdier før bruk, håndterer feil bedre i standardbiblioteket, bruker konseptet med uforanderlige referanser og variabler som standard, tilbyr sterk statisk skriving for å minimere logiske feil.

Hovedinnovasjoner:

  • Rust lar deg nå opprette variadiske funksjoner eksportert for kall fra C-prosjekter (C ABI). Det siste elementet i parameterlisten i slike funksjoner kan være "..."-konstruksjonen, som håndteres i Rust ved hjelp av en spesiell type, VaList, som fungerer på samme måte som va_list i C. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg:: () }; la b = usikker { args.next_arg:: () }; a + b } fn foo() -> i32 { usikker { sum(0i32, 2i32) } }
  • Funksjonene Layout::for_value_raw, mem::size_of_val_raw og mem::align_of_val_raw har blitt stabilisert for å tillate sikker størrelsesjustering og justering av råpekere, inkludert når man bruker dynamisk størrelsesregulerte typer som stykker, uten behov for å opprette datareferanser.
  • Dokumentasjonen anbefaler nå å unngå å frigjøre minne som ble statisk referert til med en ubestemt levetid (&'static) via et kall til Box::leak (runde-trip unleaking), da denne handlingen potensielt kan føre til problemer på grunn av inkompatibilitet med fremtidige kompilatoroptimaliseringer og pluggbare minneallokeringsmekanismer. I stedet for å opprette en statisk referanse for midlertidige eierskapsoverføringer, anbefales det å bruke råpekere, for eksempel via et kall til Box::into_non_null.
  • En ny del av API har blitt flyttet til kategorien stabil, inkludert metodene og implementeringene av egenskaper er stabilisert:
    • IntoIterator for boks<[T; N]>
    • IntoIterator for &Box<[T; N]>
    • IntoIterator for &mut Box<[T; N]>
    • VecDeque::retain_back
    • kjerne::ffi::VaListe
    • Boks::inn i_non_null
    • Boks::fra_ikke_null
    • Vec::into_parts
    • Vec::from_parts
    • kjerne::mem::størrelse_av_verdi_raw
    • kjerne::mem::justering_av_val_raw
    • kjerne::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • streng::FromUtf8Error::into_utf8_lossy
    • FusedIterator for StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Pakkebehandleren Cargo har nå en ny innebygd «feilsøkings»-profil, lik «dev»-profilen (feilsøkings- og utviklingsfunksjoner er planlagt å bli separert i fremtiden). Inkrementell kompilering er deaktivert som standard når man bygger i CI.
  • Målplattformen riscv64-unknown-linux-musl har blitt flyttet til støttenivå 2, som gir en byggegaranti, men ingen garanti for bestått testpakke.

I tillegg vil vi fremheve nylig annonserte prosjekter og arrangementer knyttet til Rust:

  • Microsoft har oppgradert Rust til et Tier 1-språk og vil gi full støtte for det i alle utviklingsfaser i selskapet. Tidligere ble Tier 1-støtte gitt for C++, C# og TypeScript. Rust brukes allerede i over 100 Microsoft-repositorier. Blant annet brukes Rust-komponenter allerede i produkter som Microsoft 365 og Copilot, og et dedikert backend for Rust, rustc_codegen_utc, basert på rustc-kompilatoren, er utviklet for MSVC-kompilatoren.

    Microsoft nevner hovedmålet med å bruke Rust til å styrke sikkerhetskritisk kode. Ifølge Microsoft Azures tekniske direktør er omtrent 70 % av alle sårbarheter i Windows er forårsaket av minnehåndteringsproblemer som kan unngås ved å bruke Rust.

  • Google har fjernet den fra kjernen. Linux Den gamle Binder IPC-implementasjonen, skrevet i C, er blitt avskrevet til fordel for en ny Binder IPC-driver, omskrevet i Rust. Det bemerkes at den gamle driveren i løpet av de 15 årene den har eksistert, har akkumulert betydelig teknisk gjeld og en rekke komplikasjoner, noe som har hindret feildeteksjon, vedlikehold og tillegg av nye funksjoner. Binder IPC-driveren i Rust er utpekt som hoveddriver og presenteres ikke lenger som en eksperimentell utvikling.
  • Arti 2.7.0, en Rust-implementering av Tor-verktøysettet, er utgitt. Når Artis kodebase når et nivå som kan erstatte C-implementeringen fullstendig, har Tor-utviklerne til hensikt å gjøre Arti til den primære Tor-implementeringen og gradvis fase ut vedlikehold av C-implementeringen. Den nye versjonen inkluderer funksjonalitetsutvikling for reléer og servere Funksjonalitet for katalogautorisasjon (DA) knyttet til dokumentparsing, støtte for speiling av katalogservere og behandling av DNS-trafikk. En RPC-implementering for konfigurasjonsendringer og -kontroller er lagt til. Flere sårbarheter er rettet – onion-tjenesteadministratorer anbefales å oppdatere systemene sine snarest.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster