Veröffentlichung der Programmiersprache Rust 1.52

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.52 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:

  • Die Bindung an die Ausführungsreihenfolge der Befehle „Cargo Check“ und „Cargo Clippy“ wurde entfernt. Bisher führte der Aufruf von „cargo clippy“ nach „cargo check“ nicht zum Start des Clippy-Dienstprogramms (Linter), da für diese Prüfmodi keine Cache-Trennung vorhanden war. Jetzt ist dieses Problem gelöst und die Reihenfolge, in der „Cargo Clippy“ und „Cargo Check“ aufgerufen werden, spielt keine Rolle mehr.
  • Ein neuer Teil der API wurde in die stabile Kategorie übertragen, einschließlich der folgenden Methoden, die stabilisiert wurden:
    • Argumente::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • Slice::Partitionspunkt
    • str::rsplit_once
    • str::split_once
  • Das Attribut „const“, das die Möglichkeit seiner Verwendung in jedem Kontext anstelle von Konstanten bestimmt, wird in den Methoden verwendet:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_lowercase
    • u8::eq_ignore_ascii_case
  • Lint Check unsafe_op_in_unsafe_fn hinzugefügt, um festzustellen, ob unsicherer Code, der in unsicheren Funktionen verwendet wird, von unsicheren Blöcken eingerahmt wird.
  • Es ist erlaubt, veränderliche Zeiger auf Arrays in die Form von Zeigern auf den Typ des Array-Elements umzuwandeln. sei mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
  • 9 neue Checks wurden zu Clippy (Linter) hinzugefügt.
  • Der Frachtpaketmanager unterstützt jetzt das Feld „manifest_path“ in JSON für Pakete. Unterstützung für die Angabe von Lizenzinformationen im SPDX 3.11-Format zum crates.io-Repository hinzugefügt.
  • Beim Ausführen von Tests können mehrere Filter angegeben werden. Wenn Sie beispielsweise „cargo test – foo bar“ ausführen, werden alle Tests ausgeführt, die den Masken „foo“ und „bar“ entsprechen.
  • Das Standard-LLVM-Toolkit wurde auf LLVM 12 aktualisiert.
  • Die dritte Unterstützungsebene wurde für die Plattformen s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl und powerpc-unknown-openbsd implementiert. 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