Veröffentlichung der Programmiersprache Rust 1.69

Die Veröffentlichung der universellen Programmiersprache Rust 1.69, die vom Mozilla-Projekt gegründet wurde, jetzt aber unter der Schirmherrschaft der unabhängigen gemeinnützigen Organisation Rust Foundation entwickelt wird, wurde veröffentlicht. Die Sprache konzentriert sich auf die Speichersicherheit und bietet die Möglichkeit, eine hohe Jobparallelität zu erreichen und gleichzeitig die Verwendung eines Garbage Collectors und einer Laufzeit zu vermeiden (die Laufzeit beschränkt sich auf die grundlegende Initialisierung und Wartung der Standardbibliothek).

Die Speicherverarbeitungsmethoden von Rust bewahren den Entwickler vor Fehlern bei der Manipulation von Zeigern und schützen vor Problemen, die durch die Speicherverarbeitung auf niedriger Ebene entstehen, wie z. B. Zugriff auf einen Speicherbereich, nachdem dieser freigegeben wurde, Dereferenzierung von Nullzeigern, Pufferüberläufe usw. Um Bibliotheken zu verteilen, Builds bereitzustellen und Abhängigkeiten zu verwalten, entwickelt das Projekt den Cargo-Paketmanager. Das crates.io-Repository wird zum Hosten von Bibliotheken unterstützt.

Die Speichersicherheit wird in Rust zur Kompilierungszeit durch Referenzprüfung, Verfolgung des Objektbesitzes, Verfolgung der Objektlebensdauer (Umfänge) und Beurteilung der Korrektheit des Speicherzugriffs während der Codeausführung gewährleistet. Rust bietet außerdem Schutz vor Ganzzahlüberläufen, erfordert eine obligatorische Initialisierung von Variablenwerten vor der Verwendung, behandelt Fehler in der Standardbibliothek besser, wendet standardmäßig das Konzept unveränderlicher Referenzen und Variablen an und bietet starke statische Typisierung, um logische Fehler zu minimieren.

Wichtigste Neuerungen:

  • Der Cargo-Paketmanager implementiert die Erkennung von Warnungen, die automatisch aufgelöst werden können, und die entsprechenden Empfehlungen zum Ausführen von „Cargo Fix“ oder „Cargo Clippy --Fix“. Warnung: unbenutzter Import: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | benutze std::hash::hash; | ^^^^^^^^^^^^^^^ | = Hinweis: '#[warn(unused_imports)]' standardmäßig aktiviert. Warnung: 'foo' (bin "foo") hat 1 Warnung generiert (führen Sie 'cargo fix --bin "foo"' aus, um 1 Vorschlag anzuwenden)
  • Cargo wurde hinzugefügt, um eine Empfehlung zur Verwendung des Befehls „cargo add“ anzuzeigen, wenn versucht wird, eine Bibliothek mit dem Befehl „cargo install“ zu installieren.
  • Um die Kompilierungszeit zu verkürzen, wurden Debugging-Informationen in Build-Skripten standardmäßig deaktiviert. Wenn die Build-Skripte erfolgreich ausgeführt werden, macht die Änderung keinen sichtbaren Unterschied. Wenn sie jedoch fehlschlägt, enthält der Backtrace-Dump weniger Informationen. Um das alte Verhalten zu Cargo.toml zurückzugeben, fügen Sie Folgendes hinzu: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Ein neuer Teil der API wurde in die Kategorie „stabil“ verschoben, einschließlich der Stabilisierung der Methoden und Implementierungen von Merkmalen:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • Das Attribut „const“, das die Möglichkeit der Verwendung in jedem Kontext anstelle von Konstanten bestimmt, wird in Funktionen verwendet:
    • 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
  • Es wurde die Möglichkeit hinzugefügt, True- und False-Flags in Compiler-Argumenten zu verwenden.

Source: opennet.ru

Kommentar hinzufügen