Veröffentlichung der Programmiersprache Rust 1.62

Die Veröffentlichung der universellen Programmiersprache Rust 1.62, 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 Paketmanager „cargo“ bietet den Befehl „add“, mit dem Sie über die Befehlszeile neue Abhängigkeiten zum Cargo.toml-Manifest hinzufügen oder vorhandene Abhängigkeiten ändern können. Mit dem Befehl können Sie auch einzelne Features und Versionen angeben, zum Beispiel: cargo add serde –features derive cargo add nom@5
  • Es wurde die Möglichkeit hinzugefügt, „#[derive(Default)]“ mit Aufzählungen zu verwenden, in denen die Standardoption mithilfe des Attributs „#[default]“ definiert wird. #[derive(Default)] enum Vielleicht { #[default] Nothing, Something(T), }
  • Auf der Linux-Plattform wird eine kompaktere und schnellere Implementierung des Mutex-Synchronisationsmechanismus verwendet, basierend auf der Verwendung von Futexen, die vom Linux-Kernel bereitgestellt werden. Im Gegensatz zur bisher genutzten Implementierung auf Basis der pthreads-Bibliothek benötigt die neue Version zur Speicherung des Mutex-Zustandes nur noch 5 statt 40 Bytes. Ebenso wurden die Sperrmechanismen Condvar und RwLock auf futex übertragen.
  • Eine zweite Unterstützungsebene für die Zielplattform x86_64-unknown-none wurde implementiert, um ausführbare Dateien zu generieren, die ohne Betriebssystem funktionieren. Beispielsweise kann beim Schreiben von Kernel-Komponenten die angegebene Zielplattform verwendet werden. Bei der zweiten Supportstufe handelt es sich um eine Montagegarantie.
  • Die dritte Unterstützungsebene wurde für die Plattformen aarch64-pc-windows-gnullvm und x86_64-pc-windows-gnullvm implementiert. Die dritte Ebene umfasst grundlegende Unterstützung, jedoch ohne automatisierte Tests, Veröffentlichung offizieller Builds oder Prüfung, ob der Code erstellt werden kann.
  • Ein neuer Teil der API wurde in die Kategorie „stabil“ verschoben, einschließlich der Stabilisierung der Methoden und Implementierungen von Merkmalen:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::lines
    • windows::CommandExt::raw_arg
    • impl Standardwert für AssertUnwindSafe
    • Aus > für Rc
    • Aus > für Arc<[u8]>
    • FusedIterator für EncodeWide

    Source: opennet.ru

Kommentar hinzufügen