Udgivelsen af programmeringssproget Rust 1.90, der er baseret på projektet Mozilla, men nu udvikles under beskyttelse af den uafhængige nonprofitorganisation Rust Foundation. Sproget fokuserer på sikker håndtering af hukommelse og tilbyder midler til at opnå høj parallellisme i opgaveløsningen, samtidig med at det klarer sig uden brug af en affaldssamler og runtime (runtime begrænser sig 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:
- I Linux på x86_64-arkitektur computere anvendes LLD-linkeren fra LLVM-projektet som standard til dynamisk binding af crate-pakker. Brugen af LLD i forhold til BFD-linkeren har ført til forbedret ydeevne ved binding af store eksekverbare filer og projekter med store mængder fejlinformation samt hurtigere inkrementel genopbygning. I de fleste tilfælde er LLD bagudkompatibel med BFD. I tilfælde af problemer kan BFD genindføres ved at angive flagget ‘-C linker-features=-lld’ i miljøvariablen RUSTFLAGS eller ved at tilføje følgende til konfigurationsfilen .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = [‘-Clinker-features=-lld’]
- I paketmanageren cargo er der i kommandoen «publish» implementeret en mulighed «—workspace», der gør det muligt automatisk at offentliggøre alle pakker fra det valgte arbejdsrum (et sæt pakker, der bruger en enkelt Cargo.lock-fil og et fælles byggeområde), samtidig med at rækkefølgen af pakkerne bevares og afhængighederne mellem dem tages i betragtning.
- En ny batch af API'er er blevet klassificeret som stabile, herunder stabilisering af metoder og implementeringer af traits:
- u{n}::checked_sub_signed
- u{n}::overflowing_sub_signed
- u{n}::saturating_sub_signed
- u{n}::wrapping_sub_signed
- impl Copy for IntErrorKind
- impl Hash for IntErrorKind
- impl PartialEq<&CStr> for CStr
- impl PartialEq<CString> for CStr
- impl PartialEq<Cow<CStr>> for CStr
- impl PartialEq<&CStr> for CString
- impl PartialEq<CStr> for CString
- impl PartialEq<Cow<CStr>> for CString
- impl PartialEq<&CStr> for Cow
- impl PartialEq<CStr> for Cow
- impl PartialEq<CString> for Cow
- Flagget «const» anvendt i funktionerne:
- <[T]>::reverse
- f32::floor
- f32::ceil
- f32::trunc
- f32::fract
- f32::round
- f32::round_ties_even
- f64::floor
- f64::ceil
- f64::trunc
- f64::fract
- f64::round
- f64::round_ties_even
- For målplatforme baseret på Musl-biblioteket, der er på tredje supportniveau, er dynamisk linking aktiveret som standard: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl og thumbv7neon-unknown-linux-musleabihf.
- Målplatformen «x86_64-apple-darwin» er flyttet fra første supportniveau til andet (Apple planlægger at afslutte understøttelsen af x86_64-arkitekturen). Første supportniveau indebærer opbygning af binære builds, udførelse af omfattende test og højeste garanti for platformstøtte — hver ændring i compileren testes ved at køre et komplet testsæt. Andet supportniveau indebærer garanti for build, men ingen garantier under testgennemgang.
Der skal også nævnes, at Microsoft har udviklet værktøjer til at udvikle Windows-drivere i Rust-sproget. På GitHub er der allerede offentliggjort et sæt crate-pakker til at oprette drivere baseret på WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework) og UMDF (User-Mode Driver Framework), samt Win32-tjenester, der er nyttige til brug i Windows 11. Projektets mål er at give udviklere, der arbejder med Rust, biblioteker og funktioner, der svarer til dem, der tilbydes i WDK-værktøjerne til udviklere af drivere i C-sproget. I den nuværende fase bruger udviklingsværktøjet til drivere i Rust mange unsafe-opkald ved interaktion med Windows-subsystemer, men i fremtiden er der planer om at forberede sikre abstraktioner for kerne-strukturer og DDI (Device Driver Interface). Projektets resultater distribueres under MIT- og Apache 2.0-licenserne.
Kilde: opennet.ru
