Utgivningen av programmeringssprÄket Rust 1.97 har offentliggjorts, vilket baserades pÄ projektet Mozilla men som nu utvecklas under skydd av den oberoende ideella organisationen Rust Foundation. SprÄket Àr fokuserat pÄ sÀker minneshantering och tillhandahÄller verktyg för att uppnÄ hög parallellitet i uppgiftsutförande, utan att anvÀnda en garbage collector och runtime (runtime begrÀnsas till grundlÀggande initialisering och underhÄll av standardbiblioteket).
Minneshanteringsmetoderna i Rust syftar till att eliminera fel vid hantering av pekare och skydda mot problem som uppstÄr frÄn lÄg nivÄ minneshantering, sÄsom att referera till minnesomrÄden efter att de har frigjorts, dereferensiering av nullpekare, buffertöverskridningar, etc. För spridning av bibliotek, byggnation och hantering av beroenden utvecklas paketchefen Cargo. För att lagra 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:
- En ny namngivningsschema (mangling) för funktioner, globala variabler och datastrukturer i de genererade objekt- och exekverbara filerna Àr aktiverad som standard (-Csymbol-mangling-version=v0). Namnen dekoreras för att förhindra konflikter under lÀnkningen av olika program, genom att bifoga specifik kontext, sÄsom modulens sökvÀg och namnet pÄ crate-paketet.
Det tidigare namndekoreringsschemat, baserat pÄ Itanium ABI, hade brister sÄsom att generics parametrar ersattes med svÄrlÀsta hashvÀrden och delar av kompilatorn som inte utnyttjade Itanium ABI, vilket krÀvde anvÀndning av Rust-specifika namnavkodare. I Rust 1.97 anvÀnds som standard ett dekoreringsschema utvecklat specifikt för Rust som saknar de tidigare nÀmnda bristerna. Det gamla schemat planeras att tas bort i en av de kommande utgÄvorna.
- Paketförvaltaren cargo har nu inbyggd möjlighet att hantera responsen pĂ„ kompilatorvarningar vid byggnation. En miljövariabel, CARGO_BUILD_WARNINGS, har lagts till och kan ha tre vĂ€rden: warn (standard) â varningarna skrivs ut pĂ„ skĂ€rmen; allow â döljer varningarna; deny â hanterar varningar som fel, vilket stoppar byggprocessen.
I tidigare versioner var det nödvÀndigt att ange '-Dwarnings' i RUSTFLAGS för kompilatorn för att avsluta byggprocessen efter att en varning hade skrivits ut, men nÀr RUSTFLAGS Àndrades, betraktade paketförvaltaren cargo byggprocessen som ny, vilket innebar att data i cachen inte beaktades och hela projektet kompilerades om frÄn grunden. Att flytta konfigurationen till cargo eliminerade behovet av att rensa cachen och att göra en fullstÀndig omkompilering vid Àndring av varningshanteringslÀget, samt förenklade aktivering av varningshantering som fel i kontinuerliga integrationssystem.
- Vid byggnation Àr visning av meddelanden frÄn lÀnkaren som standard aktiverat. Meddelandena presenteras som varningar genom en speciell lint-regel 'linker_messages', som inte ingÄr i den standardiserade gruppen 'warnings'. Samtidigt filtrerar rustc meddelanden som Àr typiska falska positiva eller normalt beteende och lÀmnar kvar varningar som kan indikera problem, sÄsom varningar om förÄldrade alternativ och oönskade instÀllningar. Tidigare visades information frÄn lÀnkaren endast vid ett felaktigt avslutande, medan alla andra meddelanden dolde sig. För att ÄterstÀlla det gamla beteendet kan följande lÀggas till i Cargo.toml: [lints.rust] linker_messages = 'allow'
- En ny uppsÀttning API har blivit stabiliserad, inklusive stabilisering av metoder och implementeringar av traits:
- Default för RepeatN
- Copy för ffi::FromBytesUntilNulError
- Send för std::fs::File för UEFI
- ::isolate_highest_one
- ::isolate_lowest_one
- ::högsta_ettan
- ::lÀgsta_ettan
- ::bit_width
- NonZero::isolera_högsta_ettan
- NonZero::isolera_lÀgsta_ettan
- NonZero::högsta_ettan
- NonZero::lÀgsta_ettan
- NonZero::bit_width
- Egenskapen «const» tillÀmpas i metoden char::is_control.
Man kan Àven nÀmna nyligen tillkÀnnagivna projekt och hÀndelser relaterade till Rust:
- Projektet zinnia utvecklar ett modulÀrt Unix-liknande kÀrna skrivet i Rust och distribueras under GPLv2-licensen. KÀrnan stöder POSIX-grÀnssnitt och vissa utvidgningar frÄn BSD och Linux, sÄsom epoll och timerfd. Den implementerade funktionen Àr tillrÀcklig för att köra skrivbordsmiljön Xfce pÄ en X-server och en komposit servern Weston baserat pÄ Wayland. Stöd för bÄde uppstart i QEMU-emulatorn och pÄ verklig hÄrdvara, sÄsom en ThinkPad E14 G7-laptop.
- Kommunikationsbiblioteket iroh 1.0 har slÀppts, vilket möjliggör att upprÀtta nÀtverksanslutningar mellan applikationer pÄ olika vÀrdar med anslutning via kryptografiska nycklar istÀllet för IP-adresser (nyckeln som ska anslutas anges och iroh hittar den relaterade vÀrden och upprÀttar en krypterad anslutning med anvÀndning av QUIC-protokollet). Direkt P2P-anslutningar upprÀttas om möjligt, men om det inte Àr möjligt faller man tillbaka till att arbeta via relÀer, som ocksÄ anvÀnds för att upptÀcka vÀrdar via nycklar. Det finns möjlighet att köra sitt eget relÀ eller ansluta till offentliga relÀer som stöds av gemenskapen.
Bland de utökade funktionerna finns: stöd för Multipath QUIC för att leverera paket samtidigt över flera vÀgar, möjlighet att fungera bakom NAT, statisk konfigurationslÀge för anslutning till lokala enheter utan internetÄtkomst, möjlighet att bygga i mellankod WASM för att köras i webblÀsaren, stöd för att skapa egna transportmedel, till exempel för att ansluta via Bluetooth, WiFi Aware eller LoRa. Koden Àr skriven i Rust och distribueras under licenserna Apache-2.0 och MIT. Wrapper för Python, Node.js, Kotlin och Swift finns tillgÀngliga.
- Skaparen av JavaScript-serverplattformen Bun har publicerat en artikel som analyserar projektet för att skriva om Bun frÄn Zig till Rust med hjÀlp av AI-modellen Claude Fable. Det noteras att Bun 1.3.14 kommer att bli den sista utgÄvan pÄ Zig, och nÀsta version Bun 1.4.0 kommer redan att vara pÄ Rust. Enligt genomförda tester konsumerar versionen pÄ Rust betydligt mindre minne och Àr 2-5% snabbare Àn versionen pÄ Zig. Storleken pÄ körfilen i versionen pÄ Rust har minskat med 20%.
KĂ€lla: opennet.ru
