D'Verëffentlechung vun der Rust 1.84 allgemeng Zweck Programméierungssprooch, gegrënnt vum Mozilla-Projet, awer elo entwéckelt ënner der Regie vun der onofhängeger Asbl Rust Foundation, gouf publizéiert. D'Sprooch konzentréiert sech op d'Erënnerungssécherheet a stellt d'Moyene fir en héije Jobparallelismus z'erreechen, während d'Benotzung vun engem Gerempels a Runtime vermeit (Runtime gëtt op Basisinitialiséierung an Ënnerhalt vun der Standardbibliothéik reduzéiert).
Rust d'Erënnerungsveraarbechtungsmethoden retten den Entwéckler vu Feeler beim Manipulatioun vu Pointer a schützt géint Probleemer déi entstinn wéinst nidderegen Niveau Memory Handhabung, sou wéi Zougang zu engem Erënnerungsberäich nodeems se befreit gouf, Nullpointer ofgeleent, Pufferiwwerschlag, etc. Fir Bibliothéiken ze verdeelen, Builds ze bidden an Ofhängegkeeten ze managen, entwéckelt de Projet de Cargo Package Manager. De crates.io Repository gëtt ënnerstëtzt fir Bibliothéiken ze hosten.
Gedächtnissécherheet gëtt a Rust zur Zesummesetzungszäit zur Verfügung gestallt duerch Referenzprüfung, Verfollegung vum Objektbesëtzer, Verfollegung vun Objektliewenszäiten (Scope), an d'Korrektheet vum Gedächtniszougang wärend der Code Ausféierung bewäerten. Rust bitt och Schutz géint ganz Zuelen Iwwerschwemmungen, erfuerdert obligatoresch Initialiséierung vu variabelen Wäerter virum Gebrauch, handhabt Feeler besser an der Standardbibliothéik, applizéiert d'Konzept vun onverännerleche Referenzen a Variablen als Standard, bitt staark statesch Tippen fir logesch Feeler ze minimiséieren.
Haaptinnovatiounen:
- De Cargo Package Manager huet e stabiliséierte Ofhängegkeetsveraarbechtungsmechanismus deen Versioune vun ofhängege Komponenten auswielt andeems d'Kompatibilitéit mat Versioune vum Rust Compiler deklaréiert gëtt als minimal ënnerstëtzt vum Projet (MSRV, Minimum Supported Rust Version). Déi nei Feature eliminéiert de Besoin fir Ënnerhalter fir manuell méi al Versioune vun all Ofhängegkeet a Projeten ze wielen déi kompatibel bleiwen mat eelere Versioune vum Rust Toolkit. Den neie Ofhängegkeetsresolutiounsmodus gëtt als Standard an der Rust 1.85 Verëffentlechung aktivéiert, awer fir de Moment ass et als Optioun verfügbar, déi aktivéiert ka ginn andeems Dir 'inkompatibel-rust-versionen = " an der "[Resolver]" Sektioun vun der ". cargo/config.toml" Datei. fallback"'.
- Mir hunn ugefaang de Compiler an en neien Typ Solver ze konvertéieren, entworf fir d'Grenze vun der Anwendbarkeet vun den Eegeschaften ze kontrolléieren, d'Typen ze normaliséieren an d'Typ Kompatibilitéit ze evaluéieren. An der Versioun 1.84 gëtt en neien Handler benotzt fir d'Konsistenz vun den Trait-Implementatiounen ze kontrolléieren, d.h. bewäerten d'Existenz vun héchstens engem Charakter fir den Typ a Fro, andeems de Code vun anere Këschtpakete berücksichtegt. Dëse Scheck huet eis erlaabt Problemer an der aler Typ Handler Implementatioun lass ze ginn, déi potenziell zu Konflikter féieren kéinten wéinst der Kräizung vu verschiddenen Typimplementatiounen.
- Eng nei API "Strict Provenance" gouf proposéiert, déi benotzt ka ginn fir e Pointer op en ganzt Zuel an zréck ze konvertéieren, andeems d'Metadaten, déi um Pointer verbonne sinn, mat Informatioun iwwer säin Hierkonft an d'Benotzungsberäich berücksichtegt (zousätzlech zu d'Adress, den "Provenance" Wäert ass un den Zeiger mat Informatioun iwwer d'Verbindung mat anere Pointer befestegt , wat Iech erlaabt ze bestëmmen wou a wéini de Pointer op d'Erënnerung kënnt). Wann Dir e Pointer op en Ganzt an zréck werft, geschitt ondefinéiert Verhalen wéinst der Schwieregkeet fir den Urspronk vum resultéierende Pointer ze verfolgen. Déi nei API erlaabt Iech Low-Level Pointer Operatiounen auszeféieren, sou wéi zousätzlech Informatioun an den nidderegen Uerdnungsbits vum Pointer ze späicheren, ouni de Pointer op eng ganz Zuel ze werfen.
- En neien Deel vun der API gouf an d'Kategorie vum Stall geplënnert, dorënner d'Methoden an d'Implementatioune vun de Charaktere goufen stabiliséiert:
- Ipv6Addr::is_unique_local
- Ipv6Addr::is_unicast_link_local
- core::ptr::with_exposed_provenance
- core::ptr::with_exposed_provenance_mut
- ::adr
- :: exposéieren_provenance
- :: mat_addr
- :: map_addr
- :: ass
- ::checked_isqrt
- :: ass
- NonZero::isqrt
- Kär::ptr::ouni_provenance
- core::ptr::ouni_provenance_mut
- Kär::ptr::dangling
- core::ptr::dangling_mut
- Pin::as_deref_mut
- De "const" Zeechen gëtt a Funktiounen benotzt:
- AtomicBool::from_ptr
- AtomicPtr::from_ptr
- AtomicU8::from_ptr
- AtomicU16::from_ptr
- AtomicU32::from_ptr
- AtomicU64::from_ptr
- AtomicUsize :: from_ptr
- AtomicI8::from_ptr
- AtomicI16::from_ptr
- AtomicI32::from_ptr
- AtomicI64::from_ptr
- AtomicIsize :: from_ptr
- :: ass_null
- ::as_ref
- :: as_mut
- Pin :: nei
- Pin :: new_unchecked
- Pin::get_ref
- Pin::into_ref
- Pin::get_mut
- Pin::get_unchecked_mut
- Pin::static_ref
- Pin ::static_mut
- Ënnerstëtzung fir Assembler Inline Inserts fir s390x an Arm64EC Architekturen gouf stabiliséiert.
- Ënnerstëtzung fir Multivalue, Referenz-Typen a Schwanz-Call Funktionalitéit gouf fir d'WebAssembly Zilplattform stabiliséiert.
- Den zweeten Niveau vun der Ënnerstëtzung fir d'wasm32v1-none Plattform gouf implementéiert. Den zweeten Niveau vun der Ënnerstëtzung beinhalt eng Versammlungsgarantie.
Zousätzlech kënne verschidde Projeten am Zesummenhang mat Rust bemierkt ginn:
- D'Verëffentlechung vum Tock 2.2 Betriebssystem, geschriwwen an der Rust Sprooch a zielt op d'Benotzung a Mikrokontroller, gouf publizéiert. De System erlaabt d'simultan Ausféierung vu multiple net vertrauten Uwendungen op embedded Geräter mat enger limitéierter RAM Gréisst, wéi Sensoren, TPM (Trusted Platform Module), Authentifikatioun Schlësselfobs a wearable Geräter. Plattforme mat Mikrokontroller baséiert op ARM Cortex-M a RISC-V Architekturen ginn ënnerstëtzt. E Schlëssel Feature vum Tock ass d'Isolatioun vun der Applikatioun, Kernel a Chaufferschichten, souwéi d'Isolatioun vun all Applikatioun a Chauffer separat. Isolatioun benotzt souwuel d'Kapazitéite vun der Rust Sprooch an d'Trennung um Erënnerungsschutzniveau.
- De VEKOS (Verified Experimental Kernel OS) Projet entwéckelt e Betribssystemkär an der Rust Sprooch, déi d'Verifizéierung vun ausführbare Komponenten ubitt. Fir all Dateiesystemoperatioun, Prozesskreatioun an Erënnerungsallokatioun gëtt e kryptographesche Beweis generéiert deen d'Operatioun erlaabt während der Ausféierung ze verifizéieren (d'Ëmsetzung gëtt verglach mat der Benotzung vun engem Blockchain fir Aktiounen am Betribssystem ze verifizéieren). Am VKFS Dateiesystem, fir d'Integritéit an de Schutz vu retroaktiven Verzerrung ze garantéieren, gëtt d'Merkle Tree Struktur benotzt, all Branche an där all ënnerierdesch Branchen a Wirbelen verifizéiert, dank Bamhashing. Memory Allocation gëtt am COW (Copy-On-Write) Modus duerchgefouert.
- Eng Grupp vu Fuerscher vu Microsoft an Inria entwéckelt en Ënnerdeel vun der C Sprooch, Mini-C, entwéckelt fir automatesch C Programmer an eng Rust Representatioun ze iwwersetzen. Am Géigesaz zum c2rust Compiler erlaabt den neie Projet Iech Rust Code ze generéieren ouni onsécher ze benotzen, awer zielt haaptsächlech fir C Projeten ze konvertéieren déi e formelle Beweis vun Zouverlässegkeet hunn. D'Implikatioun ass datt et méi einfach ass fir d'éischt e C-Projet an eng Mini-C Representatioun ze konvertéieren déi keng Zeigerarithmetik erlaabt wéi onsécher Blocks ëmzeschreiwen nodeems se direkt vun C op Rust kompiléiert sinn.
D'Compiler Implementatioun baséiert op der KaRaMeL Toolkit. Mini-C gouf entwéckelt a getest als Deel vun engem Projet fir d'HACL* Kryptografesch Bibliothéik zu Rust ëmzeschreiwen, fir déi e formelle Beweis vun Zouverlässegkeet geliwwert gouf. En ähnleche Beweis gouf benotzt fir d'Fäegkeet ze demonstréieren fir sécher Rustcode vu Mini-C ze generéieren.
- Den Daniel Stenberg, den Auteur vum Curl-Utility, huet ugekënnegt datt de Curl-Projet net méi en alternativen HTTP-Backend geschriwwen an Rust mat der Hyper-Bibliothéik entwéckelt an ënnerhält. De Grond uginn ass e Mangel un Interessi vum Deel vun Entwéckler a Benotzer.
- D'Beta Verëffentlechung vun der Fish 4.0 Kommando Shell, op Rust nei geschriwwen, gouf ugekënnegt. Et gëtt bemierkt datt no zwee Joer Entwécklung de Fish Codebase komplett vu C ++ op Rust transferéiert gouf. Den Iwwergank op Rust erlaabt eis Probleemer mat Multithreading ze léisen, modern Tools ze kréien, déi Feeler an der Kompiléierungsstadium erkennen, d'Erënnerungssécherheet verbesseren an de Projet méi attraktiv fir nei Entwéckler maachen.
- Den Tor Project huet d'Verëffentlechung vun Arti 1.3.2 publizéiert, eng alternativ Implementatioun vum Tor Client am Rust. Arti bitt eng embeddbar Bibliothéik déi vu verschiddenen Uwendungen benotzt ka ginn. Wann Dir Arti kreéiert, gouf d'Vergaangenheet an der Tor Entwécklung berücksichtegt fir bekannt architektonesch Probleemer ze vermeiden an de Projet méi modulär an effizient ze maachen. D'1.x Branche ass markéiert als gëeegent fir allgemeng Benotzer ze benotzen a bitt deeselwechten Niveau vu Privatsphär, Benotzerfrëndlechkeet a Stabilitéit wéi d'Haapt C Implementatioun. Déi nei Versioun setzt d'Entwécklung vu RPC weider, Virbereedunge goufen fir d'Ëmsetzung vun der Relais-Ënnerstëtzung gemaach, a Schutz géint DoS-Attacke op Onion-Servicer gouf bäigefüügt.
- D'Verëffentlechung vum Bevy 0.15 Spillmotor, geschriwwen a Rust, gouf publizéiert. De Motor benotzt en Data Driven Modell fir Spilllogik ze definéieren, gebaut op engem Set vu fäerdege Bevy ECS (Entity Component System) Komponenten déi parallel ausgefouert kënne ginn. Ënnerstëtzt 2D an 3D Rendering, Skelett Animatioun, Rendering Grafik Definitioun, Szen Generatioun System, User Interface Kader, Ännerunge fir Szenen a Ressourcen ze maachen ouni de Besoin nei ze starten.
- De Konsol Text Editor Helix 25.01 gouf publizéiert, geschriwwen a Rust an erweidert d'Iddien inherent zu vim an neovim. Ënnerstëtzt Integratioun mat LSP Server a Tree-Sitter, gläichzäiteg Auswiel vu verschiddene Blocken, Benotzung vu verschidde Cursoren beim Editéieren, Themen, an DAP (Debug Adapter Protocol) Debugging Protokoll.
- De Servo Browser-Moteur, geschriwwen a Rust, huet Ënnerstëtzung fir en donkelen Designmodus bäigefüügt. D'Gréisst vum ServoShell Browser gouf ëm 20% reduzéiert. Ënnerstëtzung fir Webspezifikatioune gouf op d'Fäegkeet erweidert fir unzemellen an Messagen am Discord ze liesen (Messagen schécken ass nach net méiglech).
- Mozilla huet den Uniffi for React Native Toolkit agefouert fir Moduler fir React Native an der Rust Sprooch ze kreéieren.
- D'Performance vu PNG Bildencoder gouf getest. Rust Decoderen (png, zune-png, wuffs) hu sech méi séier erausgestallt wéi C Decoderen (libpng, spng, stb_image). Zum Beispill huet de Crate png Package (image-rs) de libpng ëm 1.8 Mol op engem x86 System an 1.5 Mol op engem ARM System ausgezeechent. Bild-rs: 375.401 MP/s (Duerchschnëtt) 318.632 MP/s (Geomean) zune-png: 376.649 MP/s (Duerchschnëtt) 302.529 MP/s (Geomean) Wuffs: 376.205 MP/s (Duerchschnëtt) 287.181 MP/s (Duerchschnëtt) geomean) libpng: 208.906 MP/s (Duerchschnëtt) 173.034 MP/s (geomean) spng: 299.515 MP/s (Duerchschnëtt) 235.495 MP/s (geomean) stb_image: 234.353 MP/s (Duerchschnëtt) 171.505 MP/s (geomean)
Source: opennet.ru
