Rost 1.96.0

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.
    Rust 1.96.0 behebt zwei SicherheitslĂŒcken, die Benutzer von Drittanbieter-Registries betreffen. CVE-2026-5223 Im Zusammenhang mit der Behandlung von symbolischen Links in Crate-Archiven: Ein schĂ€dliches Paket aus einer Drittanbieter-Registry könnte den Cache eines anderen Pakets aus derselben Registry ĂŒberschreiben. Ab Rust 1.96.0 lehnt Cargo Crate-Archive mit symbolischen Links ab. CVE-2026-5222 Dieses Problem betrifft die URL-Normalisierung in der Sparse Registry und kann in seltenen FĂ€llen dazu fĂŒhren, dass ein Cargo-Token an eine bösartige Registry gesendet wird. Laut dem Rust-Team sind Benutzer von crates.io von diesen Problemen nicht betroffen.

  • 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

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz und VPS-VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server | ProHoster