Veröffentlichung der Programmiersprache Rust 1.68

Die Veröffentlichung der universellen Programmiersprache Rust 1.68, 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 Cargo-Paketmanager und das crates.io-Repository haben die Unterstützung für das Sparse-Protokoll stabilisiert, das eine neue Art der Arbeit mit einem Index definiert, der die verfügbaren Versionen aller im Repository vorhandenen Pakete widerspiegelt. Mit dem neuen Protokoll können Sie die Arbeitsgeschwindigkeit mit crates.io erheblich steigern und Skalierungsprobleme lösen, indem die Anzahl der Pakete im Repository weiter wächst.

    Um die Verzögerungen zu reduzieren, die durch das Herunterladen eines vollständigen Index entstehen, werden bei Sparse statt mit Git auf den Index nur die erforderlichen Indexdaten direkt über HTTPS heruntergeladen, um die Abhängigkeiten eines bestimmten Projekts abzudecken. Für die Bereitstellung von Indexdaten wird ein neuer Dienst namens index.crates.io verwendet. Standardmäßig ist die Verwendung des neuen Protokolls im Rust 1.70-Zweig geplant. Um es zu aktivieren, können Sie zuvor die Umgebungsvariable „CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse“ festlegen oder den Parameter „protocol =“ zu „[registries. crates-io]“-Abschnitt der .cargo/config.toml-Datei „sparse“.

  • Das „pin!“-Makro wurde hinzugefügt, mit dem Sie eine Pin<&mut T>-Struktur aus dem Ausdruck „T“ mit lokaler Fixierung ihres Zustands erstellen können (im Gegensatz zu Box::pin reserviert es keinen Speicher auf dem Heap, sondern bindet auf Stack-Ebene).
  • Es wurde ein standardmäßiger Fehlerbehandler für die Speicherzuordnung vorgeschlagen, der bei Verwendung des Standard-Alloc-Pakets verwendet wird. Anwendungen, die nur Alloc (ohne Std) aktivieren, rufen jetzt den „Panic!“-Handler auf, wenn die Speicherzuweisung fehlschlägt, was optional mit „#[panic_handler]“ abgefangen werden kann. Programme, die die std-Bibliothek verwenden, geben weiterhin Fehlerinformationen an stderr aus und stürzen ab.
  • Ein neuer Teil der API wurde in die Kategorie „stabil“ verschoben, einschließlich der Stabilisierung der Methoden und Implementierungen von Merkmalen:
    • {core,std}::pin::pin!
    • implizit Von für {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut für PathBuf
  • In der Funktion VecDeque::new wird das Attribut „const“ verwendet, das die Möglichkeit der Verwendung in jedem Kontext anstelle von Konstanten festlegt.
  • Um auf der Android-Plattform zu funktionieren, ist jetzt mindestens NDK r25 (API 19) erforderlich, d. h. Die minimal unterstützte Android-Version wurde auf 4.4 (KitKat) erhöht.
  • Die dritte Unterstützungsstufe wurde für die Sony PlayStation Vita-Plattform implementiert (armv7-sony-vita-newlibeabihf). Die dritte Ebene umfasst grundlegende Unterstützung, jedoch ohne automatisierte Tests, Veröffentlichung offizieller Builds oder Prüfung, ob der Code erstellt werden kann.

Source: opennet.ru

Kommentar hinzufügen