Die allgemein verwendbare Programmiersprache Rust 1.69, ursprĂŒnglich von Mozilla entwickelt und jetzt unter der Schirmherrschaft der unabhĂ€ngigen Non-Profit-Organisation Rust Foundation weiterentwickelt, wurde veröffentlicht. Die Sprache konzentriert sich auf die sichere Handhabung von Speicher und bietet Mittel zur Erreichung einer hohen ParallelitĂ€t bei der AusfĂŒhrung von Aufgaben, ohne auf einen Garbage Collector und Runtime (Runtime beschrĂ€nkt sich auf die grundlegende Initialisierung und die Wartung der Standardbibliothek) angewiesen zu sein.
Die Speicherverwaltungsmethoden in Rust befreien Entwickler von Fehlern beim Umgang mit Zeigern und schĂŒtzen vor Problemen, die durch die Programmierung auf niedriger Ebene entstehen, wie z.B. den Zugriff auf freigegebenen Speicher, Dereferenzierung von Nullzeigern, PufferĂŒberlĂ€ufe usw. Zur Verteilung von Bibliotheken, zur GewĂ€hrleistung des Builds und zum Management von AbhĂ€ngigkeiten wird der Paketmanager Cargo entwickelt. FĂŒr die Bereitstellung von Bibliotheken wird das Repository crates.io unterstĂŒtzt.
Die sichere Handhabung von Speicher in Rust wird wĂ€hrend der Kompilierung durch die ĂberprĂŒfung von Referenzen, das Verfolgen des Besitztums von Objekten, das Management der Lebensdauer von Objekten (Sichtbarkeitsbereiche) und die Bewertung der Korrektheit des Zugriffs auf den Speicher zur Laufzeit sichergestellt. Rust bietet auĂerdem Mechanismen zum Schutz vor ganzzahligen ĂberlĂ€ufen, erfordert die verpflichtende Initialisierung von Variablenwerten vor der Verwendung, behandelt Fehler in der Standardbibliothek effektiver, implementiert das Konzept der UnverĂ€nderlichkeit (immutable) von Referenzen und Variablen standardmĂ€Ăig und bietet eine starke statische Typisierung zur Minimierung logischer Fehler.
Hauptneuheiten:
- Im Paketmanager Cargo wurde die Erkennung von Warnungen implementiert, die automatisch behoben werden können, sowie die Ausgabe entsprechender Empfehlungen, um âcargo fixâ oder âcargo clippy --fixâ auszufĂŒhren. warning: ungenutzter Import: âstd::hash::Hashâ â> src/main.rs:1:5 | 1 | use std::hash::Hash; | ^^^^^^^^^^^^^^^ | = Hinweis: â#[warn(unused_imports)]â standardmĂ€Ăig aktiv warning: âfooâ (bin «foo») erzeugte 1 Warnung (fĂŒhren Sie âcargo fix --bin «foo»â aus, um 1 Vorschlag anzuwenden)
- In Cargo wurde eine Empfehlung zur Verwendung des Befehls âcargo addâ beim Versuch, eine Bibliothek mit dem Befehl âcargo installâ zu installieren, hinzugefĂŒgt.
- Um die Kompilierungszeit zu verkĂŒrzen, ist das EinfĂŒgen von Debugging-Informationen in den Build-Skripten standardmĂ€Ăig deaktiviert. Bei erfolgreichem Abschluss der Build-Skripte fĂŒhrt diese Ănderung nicht zu sichtbaren Unterschieden, jedoch wird im Falle eines Fehlers der Dump mit einem RĂŒckverfolgungs-Trace weniger Informationen enthalten. Um das alte Verhalten wiederherzustellen, fĂŒgen Sie Folgendes in die Cargo.toml ein: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
- Eine neue Reihe von APIs wurde stabilisiert und in die stabile Version ĂŒberfĂŒhrt, einschlieĂlich stabilisierter Methoden und Implementierungen von Traits:
- CStr::from_bytes_until_nul
- core::ffi::FromBytesUntilNulError
- Das âconstâ-Merkmal, das die Verwendung in jedem Kontext anstelle von Konstanten ermöglicht, wurde in den Funktionen angewendet:
- SocketAddr::new
- SocketAddr::ip
- SocketAddr::port
- SocketAddr::is_ipv4
- SocketAddr::is_ipv6
- SocketAddrV4::new
- SocketAddrV4::ip
- SocketAddrV4::port
- SocketAddrV6::new
- SocketAddrV6::ip
- SocketAddrV6::port
- SocketAddrV6::flowinfo
- SocketAddrV6::scope_id
- Die Möglichkeit, die Flags true und false in den Compilerargumenten zu verwenden, wurde hinzugefĂŒgt.
Quelle: opennet.ru
