Release der Programmiersprache Rust 1.43.

Veröffentlicht Release der Systemprogrammiersprache Rust 1.43, entwickelt von Mozilla. Die Sprache konzentriert sich auf sichere Speicherverwaltung, bietet automatisches Speichermanagement und stellt Mittel zur Verfügung, um hohen Parallelismus bei der Aufgabenbearbeitung zu erreichen, ohne einen Garbage Collector verwenden zu müssen und Laufzeit.

Das automatische Speichermanagement in Rust befreit den Entwickler von der Manipulation von Zeigern und schützt vor Problemen, die aus der niederleveligen Speicherbearbeitung resultieren, wie das Zugreifen auf freigegebenen Speicher, Dereferenzierung von Nullzeigern und Buffer-Überläufen. Für die Verteilung von Bibliotheken, den Aufbau und das Management von Abhängigkeiten entwickelt sich der Paketmanager Cargo, der es ermöglicht, die benötigten Bibliotheken für das Programm mit einem Klick zu erhalten. Für die Bereitstellung von Bibliotheken wird das Repository crates.io.

Haupt Neuheiten:

  • In den Makros gibt es jetzt die Möglichkeit, Fragmente von Elementen zu verwenden, um sie in Traits, Implementierungen oder externe Blöcke zu konvertieren. Zum Beispiel:

    macro_rules! mac_trait {
    ($i:item) => {
    trait T { $i }
    }
    }
    mac_trait! {
    fn foo() {}
    }

    Wird zu folgender Generierung führen:

    trait T {
    fn foo() {}
    }

  • Die Typdefinitionen für Primitive, Referenzen und binäre Operationen wurden verbessert.
    So kann der folgende Code, der zuvor einen Fehler verursachte, jetzt kompiliert werden (Rust erkennt jetzt korrekt, dass 0.0 und &0.0 vom Typ f32 sein sollten):

    let n: f32 = 0.0 + &0.0;

  • In Cargo wurde eine neue Umgebungsvariable CARGO_BIN_EXE_{name} hinzugefügt, die beim Erstellen von Integrationstests gesetzt wird und den vollständigen Pfad zur ausführbaren Datei angibt, die im Abschnitt "[[bin]]" des Pakets definiert ist.
  • In 'if'-Ausdrücken ist die Verwendung von Attributen wie '#[cfg()]' erlaubt.
  • Die Bibliothek ermöglicht jetzt die direkte Verwendung von assoziierten Konstanten für Ganzzahlen und Gleitkommatypen, ohne das Modul importieren zu müssen. Zum Beispiel kann man direkt u32::MAX oder f32::NAN schreiben, ohne zuvor 'use std::u32' und 'use std::f32' anzugeben.
  • Ein neues Modul wurde hinzugefügt primitive, der primitive Rust-Typen reexportiert, zum Beispiel, wenn es notwendig ist, ein Makro zu schreiben und sicherzustellen, dass die Typen nicht verborgen sind.
  • Eine neue Charge von APIs wurde in die stabile Version überführt, einschließlich der Stabilisierung von

    Once::is_completed,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 und
    iter::once_with.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster