Veröffentlichung der Programmiersprache Rust 1.54

Die Veröffentlichung der vom Mozilla-Projekt gegründeten, mittlerweile aber unter der Schirmherrschaft der unabhängigen Non-Profit-Organisation Rust Foundation entwickelten Systemprogrammiersprache Rust 1.54 wurde veröffentlicht. Die Sprache konzentriert sich auf Speichersicherheit, bietet automatische Speicherverwaltung und bietet die Möglichkeit, eine hohe Aufgabenparallelität zu erreichen, ohne einen Garbage Collector oder eine Laufzeit zu verwenden (die Laufzeit beschränkt sich auf die grundlegende Initialisierung und Wartung der Standardbibliothek).

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, Builds bereitzustellen und Abhängigkeiten zu verwalten, entwickelt das Projekt den Cargo-Paketmanager. Das crates.io-Repository wird zum Hosten von Bibliotheken unterstützt.

Wichtigste Neuerungen:

  • Es wurde die Möglichkeit hinzugefügt, funktionsähnliche Makros innerhalb von Attributen zu verwenden (prozedurale Makros und Makros, die mit dem Makro „macro_rules!“ erstellt wurden). Solche Makros werden von Funktionen durch das Symbol „!“ unterschieden. nach dem Namen (macro!(...)) und Ersetzen des Makro-Quelltextes, anstatt einen Funktionsaufruf zu generieren. Der Aufruf von Makros innerhalb von Attributen kann nützlich sein, um Inhalte aus anderen Dateien in Dokumentationskommentare einzubeziehen. Um beispielsweise den Inhalt der README-Datei und das Ergebnis der Skriptausführung einzufügen, können Sie Folgendes angeben: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] Mod generiert;
  • Die integrierten Compilerfunktionen (Intrinsics) für die wasm32-Plattform wurden stabilisiert und ermöglichen die Verwendung von SIMD-Anweisungen in WebAssembly. Die meisten Funktionen, wie z. B. v128_bitselect, sind im „sicheren“ Modus verfügbar, einige Funktionen, die mit Zeigern arbeiten (z. B. v128_load), bleiben jedoch „unsicher“.
  • Die standardmäßige Verwendung der inkrementellen Kompilierung ist zurückgekehrt, sodass Sie nur die geänderten Teile des Codes neu erstellen können, was die Zeit, die zum Erstellen eines Projekts benötigt wird, wenn Sie nach geringfügigen Änderungen neu kompilieren, erheblich verkürzen kann. Die inkrementelle Kompilierung wurde in Version 1.52.1 aufgrund versteckter Fehler deaktiviert, die nach dem Hinzufügen einer zusätzlichen Prüfung zum Laden von Daten aus dem Festplatten-Cache auftauchten.
  • Ein neuer Teil der APIs wurde in die stabile Kategorie übertragen, darunter die folgenden stabilisierten:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Optionen zum Frachtbaum hinzugefügt: „—prune „ um ein Paket aus dem Abhängigkeitsdiagramm zu entfernen, „- Depth“ um nur Elemente einer bestimmten Verschachtelungsebene im Abhängigkeitsbaum anzuzeigen, „-edges no-proc-macro“ um prozedurale Makroabhängigkeiten auszublenden.

Source: opennet.ru

Kommentar hinzufügen