ProgrammeringssprÄket Rust 1.90 har publicerats, som ursprungligen utvecklades av Mozilla men nu vidareutvecklas under en oberoende, icke-vinstdrivande organisation, Rust Foundation. SprÄket fokuserar pÄ sÀker minneshantering och ger verktyg för att uppnÄ hög parallellitet i uppgiftsutförandet, utan att behöva en skrÀpsamlare och runtime (runtime begrÀnsas till grundlÀggande initialisering 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:
- I Linux pÄ datorer med x86_64-arkitektur anvÀnds som standard LLD-lÀnkningsverktyget frÄn LLVM-projektet för dynamisk lÀnkning av crate-paket. AnvÀndningen av LLD jÀmfört med BFD-lÀnkningsverktyget har lett till ökad prestanda vid lÀnkning av stora körbara filer och projekt med stora mÀngder debug-information, samt snabbare inkrementell ombyggnad. I de flesta fall Àr LLD bakÄtkompatibel med BFD. Om problem uppstÄr kan du ÄtergÄ till BFD genom att ange i miljövariabeln RUSTFLAGS flaggan "-C linker-features=-lld" eller genom att lÀgga till i konfigurationsfilen .cargo/config.toml: [target.x86_64-unknown-linux-gnu] rustflags = ["-Clinker-features=-lld"]
- I pakethanteraren cargo har kommandot "publish" en "--workspace"-funktion som tillÄter automatisk publicering av alla paket frÄn det valda arbetsutrymmet (en uppsÀttning paket som anvÀnder en gemensam Cargo.lock-fil och en gemensam byggresultatskatalog), vilket bevarar paketens ordning och beaktar beroenden mellan dem.
- En ny uppsÀttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av 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
- Indikatorn "const" har tillÀmpats i funktioner:
- <[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
- För mÄlplattformar baserade pÄ Musl-biblioteket, som befinner sig pÄ tredje stöd-nivÄ, har som standard dynamisk lÀnkning inkluderats: mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl, powerpc-unknown-linux-musl, powerpc-unknown-linux-muslspe, riscv32gc-unknown-linux-musl, s390x-unknown-linux-musl och thumbv7neon-unknown-linux-musleabihf.
- Den mĂ„lplattform "x86_64-apple-darwin" har flyttats frĂ„n första till andra nivĂ„ns stöd (Apple planerar att avveckla stödet för x86_64-arkitekturen). Första nivĂ„ns stöd innebĂ€r skapandet av binĂ€rpaket, grundlig testning och högsta möjliga garantin för plattformsstöd â varje förĂ€ndring i kompilatorn kontrolleras genom att hela testsuiten körs. Andra nivĂ„ns stöd innebĂ€r garanti för byggande, men ingen garanti vid genomförande av testsuiten.
Det Àr ocksÄ vÀrt att nÀmna att Microsoft utvecklar verktyg för att skapa Windows-drivrutiner i Rust-sprÄket. PÄ GitHub har ett set av crate-paket redan publicerats för att skapa drivrutiner baserade pÄ WDM (Windows Driver Kit), KMDF (Kernel-Mode Driver Framework), och UMDF (User-Mode Driver Framework), samt Win32-tjÀnster som Àr lÀmpliga för anvÀndning i Windows 11. Projektets mÄl Àr att ge Rust-utvecklare bibliotek och funktioner som liknar dem som erbjuds i WDK-verktyget för C-drivrutinsutvecklare. För nÀrvarande anvÀnder Rust-drivrutinsutvecklingsverktyget mÄnga unsafe-anrop vid interaktion med Windows-subsystem, men det planeras att i framtiden förbereda sÀkra abstraktioner för kÀrnstrukturer och DDI (Device Driver Interface). Projektets resultat distribueras under MIT och Apache 2.0-licenser.
KĂ€lla: opennet.ru
