Veröffentlichung der Programmiersprache Rust 1.65

Die Version 1.65 der Programmiersprache Rust, ursprünglich von Mozilla entwickelt und jetzt von der unabhängigen gemeinnützigen Rust Foundation weitergeführt, wurde veröffentlicht. Die Sprache legt besonderen Wert auf sichere Speicherverwaltung und bietet Mittel zur Erreichung hohen Parallelismus bei der Ausführung von Aufgaben, ohne sich auf einen Garbage Collector oder ein ausgeklügeltes Laufzeitsystem (Runtime beschränkt sich auf die grundlegende Initialisierung und die Bereitstellung der Standardbibliothek) zu verlassen.

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:

  • Die Unterstützung für generische assoziierte Typen (GAT, Generic Associated Types) wurde hinzugefügt, die es ermöglichen, Typalias zu erstellen, die mit einem anderen Typ assoziiert sind, und die Typkonstruktoren mit Traits zu verknüpfen. trait Foo { type Bar; }
  • Es wurde der Ausdruck „let … else“ implementiert, der es ermöglicht, ein Musterübereinstimmungsbedingung direkt innerhalb des „let“-Ausdrucks zu überprüfen und beliebigen Code auszuführen, wenn das Muster nicht übereinstimmt. let Ok(count) = u64::from_str(count_str) else { panic!("Kann Integer nicht parsen: '{count_str}'"); };
  • Es ist erlaubt, das Schlüsselwort break zu verwenden, um vorzeitig aus benannten Blocks auszutreten, indem der Name des Blocks (Label) als Referenz verwendet wird, um den zu beendenden Block zu identifizieren. let result = 'block: { do_thing(); if condition_not_met() { break 'block 1; } do_next_thing(); if condition_not_met() { break 'block 2; } do_last_thing(); 3 };
  • Für Linux wurde die Möglichkeit zur separaten Speicherung von Debugging-Informationen (split-debuginfo) hinzugefügt, die zuvor nur für die Plattform macOS verfügbar war. Mit der Option '-Csplit-debuginfo=unpacked' werden die Debugging-Daten im DWARF-Format in mehreren separaten Objektdateien mit der Endung '.dwo' gespeichert. Mit der Option '-Csplit-debuginfo=packed' wird ein einziges Paket im '.dwp'-Format erstellt, das alle Debugging-Daten für das Projekt enthält. Um Debugging-Informationen direkt in den Abschnitt .debug_* von ELF-Objekten zu integrieren, kann die Option '-Csplit-debuginfo=off' verwendet werden.
  • Eine neue Reihe von APIs wurde stabilisiert und in die stabile Version überführt, einschließlich stabilisierter Methoden und Implementierungen von Traits:
    • std::backtrace::Backtrace
    • Bound::as_ref
    • std::io::read_to_string
    • ::cast_mut
    • ::cast_const
  • Das 'const'-Attribut, das die Verwendung in jedem Kontext anstelle von konstanten Werten definiert, wird in den Funktionen ::offset_from und ::offset_from verwendet.
  • Im Rahmen der finalen Phase der Implementierung des Language Server Protocols (LSP) auf rust-analyzer wurde die veraltete Implementierung des Rust Language Server (RLS) durch einen Dummy-Server ersetzt, der eine Warnung ausgibt und vorschlägt, zu rust-analyzer zu wechseln.
  • Bei der Kompilierung wurde Unterstützung für das Inline-Deployment des Intermediate Representation (MIR) hinzugefügt, was zu einer Beschleunigung der Kompilierung typischer Crate-Pakete um 3-10% führt.
  • Um die planmäßigen Builds im Paketmanager Cargo zu beschleunigen, wurde die Sortierung der in der Warteschlange wartenden Aufgaben optimiert.

Zusätzlich gibt es ein Interview über die Anwendung der Programmiersprache Rust bei Volvo zur Entwicklung von Komponenten für automobilen Informationssysteme. Der bereits bestehende, getestete Code soll nicht auf Rust umgeschrieben werden, aber für neuen Code ist Rust eine der bevorzugten Optionen zur Qualitätssteigerung bei geringerem Aufwand. Arbeitsgruppen, die sich mit der Verwendung von Rust befassen, wurden auch in den Automobilverbänden AUTOSAR (AUTomotive Open System ARchitecture) und SAE (Society of Automotive Engineers) gegründet.

Darüber hinaus sprach David Kleidermacher, Vice President of Engineering bei Google, über die Umstellung des Codes, der in der Android-Plattform zur Verwaltung von Verschlüsselungsschlüsseln verwendet wird, auf die Programmiersprache Rust. Er hob auch die Anwendung von Rust bei der Implementierung des Protokolls DNS over HTTPS, in der Technologie für UWB-Chips (Ultra-Wideband) sowie im Android Virtualization Framework, das mit dem Tensor G2-Chip verbunden ist, hervor. Für Android werden zudem neue Stacks für Bluetooth und Wi-Fi entwickelt, die ebenfalls in Rust neu geschrieben werden. Die allgemeine Strategie besteht darin, zunächst die am stärksten gefährdeten und wesentlichen Softwarekomponenten auf Rust umzustellen, um die Sicherheit schrittweise zu erhöhen, gefolgt von angrenzenden Subsystemen. Im vergangenen Jahr wurde Rust als eine der zulässigen Programmiersprachen für die Entwicklung von Android-Plattformen aufgenommen.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster