Veröffentlichung der Programmiersprache Rust 1.46

Veröffentlicht Version 1.46 der Systemprogrammiersprache Rustgegründet vom Mozilla-Projekt. Die Sprache konzentriert sich auf eine sichere Speicherverwaltung, bietet eine automatische Speicherverwaltung und bietet die Möglichkeit, eine hohe Jobparallelität zu erreichen und gleichzeitig die Verwendung eines Garbage Collectors zu vermeiden Laufzeit.

Die automatische Speicherverwaltung von Rust bewahrt den Entwickler vor Fehlern bei der Manipulation von Zeigern und schützt vor Problemen, die durch Speichermanipulation 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, die Assemblierung sicherzustellen und Abhängigkeiten zu verwalten, entwickelt das Projekt einen Paketmanager Kastenwagen, wodurch Sie mit einem Klick auf die Bibliotheken zugreifen können, die Sie für das Programm benötigen. Ein Repository wird zum Hosten von Bibliotheken unterstützt Kisten.io.

Haupt- Innovationen:

  • Die Fähigkeiten von mit dem Ausdruck „const fn“ definierten Funktionen wurden erweitert, die nicht nur als reguläre Funktionen aufgerufen, sondern auch in jedem Kontext anstelle von Konstanten verwendet werden können. Diese Funktionen werden zur Kompilierzeit und nicht zur Laufzeit berechnet und unterliegen daher bestimmten Einschränkungen, wie z. B. der Möglichkeit, nur aus Konstanten zu lesen.

    Die neue Version hebt das Verbot der Verwendung boolescher Operatoren („&&“ und „||“) in solchen Funktionen auf und ermöglicht die Verwendung von „if“, „if let“, „match“-Konstrukten,
    „while“, „while let“ und „loop“ und bietet außerdem die Möglichkeit, mithilfe des Ausdrucks „&[T]“ in Slices (Slice, dynamische Arrays) zu konvertieren. Durch die Verwendung dieser Funktionen in den „const fn“-Funktionen können Sie einige ressourcenintensive Vorgänge in die Kompilierungsphase verlagern. Beispielsweise ermöglicht die Implementierung von „const-sha1“ die Berechnung von SHA-1-Hashes zur Kompilierungszeit, was zu einer fast 40-fachen Beschleunigung der WinRT-Bindungen für Rust führt.

  • Um Fehlermeldungen informativer zu gestalten, wurde die Unterstützung für das Attribut „#[track_caller]“ stabilisiert. Dies ist nützlich für Funktionen wie Unwrap, die bei falscher Verwendung von Typen zu Panik führen können. Das angegebene Attribut wird vom Panik-Handler verwendet, um den Standort des Anrufers in einer Fehlermeldung auszugeben.
  • In der Methode std::mem::forget wird das Attribut „const“ verwendet, das die Möglichkeit seiner Verwendung in jedem Kontext anstelle von Konstanten festlegt.
  • Ein neuer Teil der API wurde in die stabile Kategorie verschoben, einschließlich der stabilisierten Option::zip und vec::Drain::as_slice.
  • Im Paketmanager Cargo hinzugefügt Unterstützung für neue Umgebungsvariablen, die beim Kompilieren eines Pakets festgelegt werden: CARGO_BIN_NAME (Name der resultierenden ausführbaren Datei), CARGO_CRATE_NAME (Paketname), CARGO_PKG_LICENSE (im Manifest angegebene Lizenz), CARGO_PKG_LICENSE_FILE (Pfad zur Lizenzdatei).

Source: opennet.ru

Kommentar hinzufügen