Die Pressemitteilung wurde veröffentlicht. Rost 1.96.0 â die neueste stabile Version der Programmiersprache Rust. Das Update wurde veröffentlicht. 28 Mai 2026 JahrEs kann mit dem Standardbefehl `rustup update stable` installiert werden. Zu den wichtigsten Ănderungen gehören neue Bereichstypen in `core::range`, die Stabilisierung von Mustervergleichsmakros, eine Verbesserung des Build-Verhaltens von WebAssembly sowie die Behebung zweier SicherheitslĂŒcken in Cargo.
Wichtige Ănderungen
Neue Bereichstypen core::range::Range*.
Neue Bereichstypen wurden in der Standardbibliothek stabilisiert: `core::range::Range`, `RangeFrom`, `RangeInclusive` und die zugehörigen Iteratoren. Anders als die alten Typen aus `core::ops` implementieren die neuen Bereiche nicht direkt `Iterator`, sondern werden ĂŒber `IntoIterator` in einen Iterator umgewandelt. Dadurch sind diese Bereiche kopierbar, was beispielsweise beim Speichern eines Bereichs als Strukturfeld praktisch ist. Syntax wie `0..1` erzeugt derzeit noch die alten Bereichstypen; die Migration zu den neuen Typen ist jedoch fĂŒr eine zukĂŒnftige Sprachversion geplant.Die Funktionen assert_matches! und debug_assert_matches! wurden hinzugefĂŒgt.
Neue Makros ermöglichen die ĂberprĂŒfung, ob ein Wert einem vorgegebenen Muster entspricht. Dies ist konzeptionell Ă€hnlich wie `assert!(matches!(âŠ))`, jedoch wird im Fehlerfall eine Debug-Darstellung des Wertes ausgegeben, was die Diagnose vereinfacht. Diese Makros wurden nicht in Prelude integriert, um Konflikte mit gĂ€ngigen Drittanbieter-Crates zu vermeiden. Daher mĂŒssen sie explizit aus `core` oder `std` importiert werden.Das Verhalten von WebAssembly-Zielen wurde geĂ€ndert.
Rust ĂŒbergibt die Option `--allow-undefined` nicht mehr an den Linker fĂŒr WebAssembly-Builds. Nicht definierte Symbole werden nun beim Linken als Fehler behandelt, anstatt automatisch in Importe aus dem Modul `env` umgewandelt zu werden. Dadurch sollten Build-Fehler und ungĂŒltige Symbolnamen frĂŒher erkannt werden. Das alte Verhalten kann bei Bedarf mit `RUSTFLAGS=-Clink-arg=--allow-undefined` oder durch explizite Angabe des importierten WebAssembly-Moduls mit `#[link(wasm_import_module = "env")]` wiederhergestellt werden.Cargo wurde mit Sicherheitsupdates versehen.
Sprachliche VerÀnderungen.
Die Veröffentlichung umfasst: Diverse kleinere Korrekturen und Verbesserungen: Ăbergabe von expr-Metavariablen von Makros an cfg ermöglicht, Never-Type-Casting in TupelausdrĂŒcken korrigiert, seltene FĂ€lle von falschen Typinferenz-Hinweisen fĂŒr Funktionsargumente behoben, UnterstĂŒtzung fĂŒr s390x-Vektorregister in Inline-Assembler hinzugefĂŒgt und ManuallyDrop-Konstanten als Templates wieder zugelassen â dies behebt einen in Rust 1.94.0 eingefĂŒhrten Fehler.Ănderungen bei Compilern und Plattformen.
fĂŒr LinuxDie UnterstĂŒtzung fĂŒr Link-Relaxation wurde fĂŒr LoongArch-Ziele aktiviert â eine Link-Optimierung, die einige ĂbergĂ€nge und Aufrufe nach der Codebereitstellung vereinfacht. FĂŒr riscv64gc-unknown-fuchsia wurde die Basiskonfiguration auf das RVA22-Profil mit UnterstĂŒtzung fĂŒr Vektorerweiterungen aktualisiert.Standardbibliotheksaktualisierungen.
Die UnterstĂŒtzung fĂŒr die Iteration ĂŒber Integer-Bereiche ungleich Null wurde hinzugefĂŒgt. Die verzögerte Behandlung von Hostadressen in SGX ĂŒber ToSocketAddr wurde ebenfalls behoben, und die Definition von âlesbarem/schreibbaremâ Speicher wurde in der Dokumentation und den internen VertrĂ€gen prĂ€zisiert: Der Nullzeiger wurde aus der allgemeinen Definition entfernt, und Ausnahmen werden nun fĂŒr spezifische Methoden separat spezifiziert.Stabilisierte APIs.
Zu den stabilisierten Schnittstellen gehören assert_matches!, debug_assert_matches!, Implementierungen von From fĂŒr AssertUnwindSafe LazyCell und LazyLock sowie neue Bereichstypen und Iteratoren aus core::range, einschlieĂlich Range, RangeFrom, RangeToInclusive und deren Iteratoren.Cargo: Ănderungen an AbhĂ€ngigkeiten und Dokumentation.
Eine AbhĂ€ngigkeit kann nun sowohl ein Git-Repository als auch eine alternative Registry angeben: Die Git-Version wird lokal verwendet, die Registry-Version beim Veröffentlichen, Ă€hnlich wie bei crates.io. Die UnterstĂŒtzung fĂŒr `target.'cfg(..)'.rustdocflags` in der Cargo-Konfiguration wurde ebenfalls hinzugefĂŒgt.Rustdoc verwaltet die Dokumentation nun genauer.
Hinweise zu veralteten APIs werden nun als regulĂ€re Dokumentation dargestellt, ohne die bisherige Sonderbehandlung mittels `white-space: pre-wrap`. AuĂerdem prĂŒft `rustdoc` nicht mehr `missing_doc_code_examples` auf Elemente innerhalb von `impl`, und Methoden und zugehörige Funktionen sind nun in der Dokumentations-Sidebar getrennt.Mögliche InkompatibilitĂ€ten.
Die Version enthĂ€lt mehrere Ănderungen, die sich möglicherweise in nicht standardkonformem Code bemerkbar machen: Das Layout einiger #[repr(Int)]-Enumerationen wurde in ExtremfĂ€llen korrigiert, und einige unnötige Unsize-Casts in Pin wurden deaktiviert. WebAssembly-Builds stĂŒrzen nun bei undefinierten Symbolen ab, das versehentlich stabilisierte Attribut #![reexport_test_harness_main] wurde wieder eingeschrĂ€nkt, die Option -Csoft-float wurde entfernt und die minimale externe LLVM-Version wurde auf 21 erhöht. FĂŒr AVR wurde der Typ c_double in f32 geĂ€ndert, da C-Doubles auf diesen Zielplattformen standardmĂ€Ăig 32-Bit-Werte haben.
Source: linux.org.ru
