Veröffentlichung der Programmiersprache Rust 1.37

Veröffentlicht Veröffentlichung der Systemprogrammiersprache Rost 1.37, gegründet vom Mozilla-Projekt. Die Sprache konzentriert sich auf die Speichersicherheit, bietet eine automatische Speicherverwaltung und bietet eine Möglichkeit, eine hohe Aufgabenparallelität zu erreichen, ohne einen Garbage Collector oder eine Laufzeit zu verwenden.

Die automatische Speicherverwaltung von Rust befreit den Entwickler von Zeigermanipulationen und schützt vor Problemen, die durch Speichermanipulation auf niedriger Ebene entstehen, wie z. B. After-Free-Speicherzugriffe, Nullzeiger-Dereferenzierungen, Pufferüberläufe und dergleichen. Es wird ein Paketmanager entwickelt, um Bibliotheken zu verteilen, die Assemblierung sicherzustellen und Abhängigkeiten durch das Projekt zu verwalten. 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:

  • Im Rustc-Compiler zur Verfügung gestellt Unterstützung für Optimierung basierend auf Code-Profiling-Ergebnissen (PGO, Profile-Guided Optimization),
    So können Sie basierend auf der Analyse der während der Programmausführung gesammelten Statistiken einen optimaleren Code generieren. Um ein Profil zu generieren, wird das Flag „-C Profile-Generate“ bereitgestellt, und um das Profil während der Assemblierung zu verwenden – „-C Profile-Use“ (zunächst wird das Programm mit dem ersten Flag zusammengestellt, läuft herum und nach der Erstellung das Profil wird mit der zweiten Fahne wieder zusammengesetzt);

  • Beim Ausführen des Befehls „cargo run“, der zum schnellen Testen von Konsolenanwendungen praktisch ist, wurde die Möglichkeit hinzugefügt, automatisch eine ausführbare Datei zur Ausführung auszuwählen, wenn das Paket mehrere ausführbare Dateien enthält. Die auszuführende Standarddatei wird durch die Anweisung default-run im Abschnitt [package] mit Paketparametern bestimmt, wodurch Sie vermeiden können, den Dateinamen jedes Mal, wenn Sie „cargo run“ ausführen, explizit über das Flag „-bin“ anzugeben.
  • Der Befehl „Frachtverkäufer“, zuvor bereitgestellt als separates Paket. Mit dem Befehl können Sie die Arbeit mit einer lokalen Kopie der Abhängigkeiten organisieren. Nach der Ausführung von „Cargo Vendor“ werden alle Quellcodes der Abhängigkeiten des Projekts von crates.io in ein lokales Verzeichnis heruntergeladen, das dann für die Arbeit ohne Zugriff auf Crates verwendet werden kann. io (nach Ausführung des Befehls wird ein Hinweis zum Ändern der Konfiguration angezeigt, um das Verzeichnis für Builds zu verwenden). Diese Funktion wird bereits verwendet, um die Auslieferung des Rustc-Compilers mit der Verpackung aller Abhängigkeiten in einem Archiv mit der Veröffentlichung zu organisieren;
  • Es ist jetzt möglich, Links zu Enum-Optionen mithilfe von Typaliasen zu erstellen (im Hauptteil der Funktion „fn increment_or_zero(x: ByteOption) können Sie beispielsweise „ByteOption::None => 0“ angeben), Typberechnungskonstrukte (‹ MyType‹.. ››::option => N) oder Self-Zugriffe (in den Blöcken c &self können Sie „Self::Quarter => 25“ angeben);
  • Es wurde die Möglichkeit hinzugefügt, unbenannte Konstanten in Makros zu erstellen. Anstatt den Elementnamen in „const“ zu definieren, können Sie jetzt das Zeichen „_“ verwenden, um dynamisch einen sich nicht wiederholenden Bezeichner auszuwählen und so Namenskonflikte beim erneuten Aufrufen des Makros zu vermeiden;
  • Es wurde die Möglichkeit hinzugefügt, das Attribut „#[repr(align(N))“ mit Aufzählungen zu verwenden, wobei eine Syntax verwendet wird, die der Definition einer AlignN‹T›-Struktur mit Ausrichtung und der anschließenden Verwendung von AlignN‹MyEnum› ähnelt;
  • Ein neuer Teil der API wurde in die stabile Kategorie verschoben, einschließlich BufReader::buffer, BufWriter::buffer und
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits und
    Slice::copy_within.

Darüber hinaus kann darauf hingewiesen werden Beginn der Tests Projekt Async-Std, die eine asynchrone Variante der Rust-Standardbibliothek bietet (eine Portierung der std-Bibliothek, in der alle Schnittstellen in einer asynchronen Version angeboten werden und mit der async/await-Syntax einsatzbereit sind).

Source: opennet.ru

Kommentar hinzufügen