Rust 1.81.0 veröffentlicht: Hier ist, was neu ist und wie man es aktualisiert
Das Rust-Team hat Rust 1.81.0 veröffentlicht und eine Reihe von Verbesserungen in Bezug auf die Stabilität, Leistung und die Entwicklererfahrung der Sprache eingeführt.
Rust 1.81.0 wird mit mehreren neuen Funktionen und Verbesserungen ausgeliefert, einschließlich der Stabilisierung des Error-Traits in core, was seine Verwendung in #![no_std]-Bibliotheken ermöglicht.
Die Sortieralgorithmen der Standardbibliothek wurden aktualisiert, um die Leistung zu verbessern, und eine neue Lint-Stufe, expect, wurde hinzugefügt, um Entwicklern zu ermöglichen, explizit zu kennzeichnen, wo eine bestimmte Lint auftreten sollte.
Außerdem wurden mehrere APIs stabilisiert, darunter char::from_u32_unchecked, CStr::count_bytes und CStr::from_ptr.
Diese Version enthält auch eine Reihe von Kompatibilitätsnotizen, einschließlich Änderungen am Panic-Hook und den Panic-Handler-Argumenten, dem Standardverhalten von nicht abgefangenen Panics in extern "C"-Funktionen und der Benennung des WASI 0.1-Ziels.
Schließlich enthält das Update eine Behebung für CVE-2024-43402, die betraf, wie std::process::Command Argumente beim Aufrufen von Batch-Dateien unter Windows verarbeitet.
Lassen Sie uns diese neuen Funktionen im Detail besprechen.
Was ist neu in Rust 1.81.0
Diese neue Version bringt mehrere wichtige Verbesserungen mit sich, darunter:
1. Stabilisierung von core::error::Error:
Rust 1.81.0 stabilisiert das Error-Trait innerhalb der core-Bibliothek, wodurch es in #![no_std]-Bibliotheken verwendbar ist. Dies ermöglicht eine breitere Standardisierung des gleichen Error-Traits im gesamten Rust-Ökosystem, unabhängig von der Zielumgebung.
2. Neue Sortierimplementierungen:
Sowohl die stabilen als auch die instabilen Sortierimplementierungen in der Standardbibliothek profitieren von aktualisierten Algorithmen, was zu einer verbesserten Laufzeitleistung und kürzeren Kompilierungszeiten führt.
Die aktualisierten Algorithmen erkennen außerdem aktiv falsche Implementierungen von Ord und reagieren darauf panisch, wodurch unerwartetes Verhalten verhindert und Entwickler dazu angeregt werden, korrekte Ordnungsimplementierungen beizubehalten.
3. Einführung von #[expect(lint)]:
Dieses neue Lint-Level ermöglicht es Entwicklern, ausdrücklich zu vermerken, wann ein bestimmter Lint auftreten sollte, und gibt eine Warnung aus, wenn dies nicht der Fall ist.
Dies ist nützlich, um einen Lint vorübergehend stummzuschalten, wegen laufender Refaktorisierung oder Fehlern bei der Lint-Implementierung, während gleichzeitig das Bewusstsein dafür erhalten bleibt, wann der Lint bearbeitet werden muss.
Zum Beispiel können Entwickler beim Migrieren eines Codebases, um eine neue Einschränkung zu erfüllen, die von einem Clippy-Lint durchgesetzt wird, #[expect(lint)] verwenden, um den Fortschritt zu verfolgen und sicherzustellen, dass das Lint durchgesetzt werden kann, sobald das Codebase konform ist.
4. Lint-Gründe:
Entwickler können nun Gründe angeben, wenn sie Lint-Stufen ändern. Diese Gründe werden in Compiler-Meldungen aufgenommen und bieten anderen Entwicklern, die in Zukunft mit dem Lint konfrontiert werden könnten, Kontext und Klarheit.
Zum Beispiel, wenn ein Projekt die Gleitkommaarithmetik mit #![deny(clippy::float_arithmetic)] deaktiviert, weil es in einer Umgebung ohne Gleitkommaunterstützung läuft, kann direkt im Code ein Grund hinzugefügt werden, um diese Entscheidung zu erklären.
5. Stabilisierte APIs und Const-Kontext-Erweiterung:
Rust 1.81.0 stabilisiert mehrere APIs, darunter core::error, hint::assert_unchecked und fs::exists. Darüber hinaus sind weitere APIs, wie char::from_u32_unchecked und CStr::from_ptr, jetzt in konstanten Kontexten stabil, wodurch die in konstanten Kontexten verfügbare Funktionalität erweitert wird.
6. Verbesserte Sicherheit und Kompatibilität:
Rust 1.81.0 bringt eine Reihe von Änderungen mit sich, um Sicherheit und Kompatibilität zu verbessern. Dazu gehört die Trennung der Argumente von Panic-Hook und Panic-Handler, das Abbrechen bei nicht abgefangenen Panics in extern "C"-Funktionen (wobei die Verwendung von -unwind nachgestellten ABI-Varianten für das Unwinding über ABI-Grenzen hinweg empfohlen wird) sowie die Umbenennung des WASI 0.1-Ziels von wasm32-wasi in wasm32-wasip1 (mit Plänen, wasm32-wasi im Januar 2025 zu entfernen).
Neben diesen wesentlichen Änderungen enthält Rust 1.81.0 eine Behebung für CVE-2024-43402, die eine korrekte Argumentenmaskierung beim Aufrufen von Batch-Dateien unter Windows mittels std::process::Command gewährleistet.
Diese Version enthält außerdem eine Vielzahl anderer Verbesserungen und Fehlerbehebungen in Rust, Cargo und Clippy.
Auf Rust 1.81.0 unter Linux aktualisieren
Um auf Rust Version 1.81.0 zu aktualisieren, können Sie das rustup-Tool verwenden. Wenn Sie zuvor eine Version von Rust mit rustup installiert haben, können Sie auf 1.81.0 aktualisieren, indem Sie den folgenden Befehl in Ihrem Terminal unter Linux ausführen:
$ rustup update stableWenn Sie rustup noch nicht installiert haben, können Sie es von der offiziellen Rust-Website herunterladen und wie in folgendem Link gezeigt installieren:
- So installieren Sie die Programmiersprache Rust unter Linux
Ressource:
- Ankündigung von Rust 1.81.0