Veröffentlichung der Programmiersprache Rust 1.55

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

  • Der Cargo-Paketmanager bietet die Möglichkeit, doppelte Fehler und Warnungen zusammenzuführen, die während eines Builds auftreten. Beim Ausführen von Befehlen wie „cargo test“ und „cargo check --all-targets“, die zu mehreren Builds eines Pakets mit unterschiedlichen Parametern führen, wird dem Benutzer jetzt eine Zusammenfassung des Auftretens eines sich wiederholenden Problems angezeigt, anstatt dass es angezeigt wird mehrere identische Warnungen beim wiederholten Erstellen derselben Datei. $ cargo +1.55.0 check —all-targets Checking foo v0.1.0 Warnung: Funktion wird nie verwendet: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = Hinweis: '#[warn(dead_code)]' standardmäßig aktiviert. Warnung: 'foo' (lib) hat 1 Warnung generiert. Warnung: 'foo' (lib test) hat 1 Warnung generiert (1 Duplikat). Dev [unoptimized + debuginfo]-Ziel wurde fertiggestellt (s)in 0.84s
  • Der Gleitkomma-Parsing-Code in der Standardbibliothek wurde verschoben, um den schnelleren und genaueren Eisel-Lemire-Algorithmus zu verwenden, der einige zuvor beobachtete Probleme beim Runden und Parsen von Zahlen mit sehr vielen Ziffern gelöst hat.
  • Die Möglichkeit, nicht geschlossene Bereiche in Vorlagen anzugeben, wurde stabilisiert („X..“ wird als Bereich interpretiert, der mit dem Wert X beginnt und mit dem Maximalwert des Integer-Typs endet): match x as u32 { 0 => println! („Null!“), 1.. => println!("positive Zahl!"), }
  • Erweiterte Fehlervarianten, die von std::io::ErrorKind abgedeckt werden (klassifiziert Fehler in Kategorien wie NotFound und wouldBlock). Bisher fielen Fehler, die nicht in bestehende Kategorien passten, in die Kategorie „ErrorKind::Other“, die auch für Fehler im Code von Drittanbietern verwendet wurde. Es gibt jetzt eine separate interne Kategorie ErrorKind::Uncategorized für Fehler, die nicht in bestehende Kategorien passen, und die Kategorie ErrorKind::Other ist auf Fehler beschränkt, die nicht in der Standardbibliothek auftreten (Standardbibliotheksfunktionen, die io::Error zurückgeben). Verwenden Sie nicht mehr die ErrorKind::-Kategorie „Andere“.
  • Ein neuer Teil der API wurde in die Kategorie „stabil“ verschoben, einschließlich der Stabilisierung der Methoden und Implementierungen von Merkmalen:
    • Gebunden::geklont
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::write
    • array::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • In der Methode str::from_utf8_unchecked wird das Attribut „const“ verwendet, das die Möglichkeit seiner Verwendung in jedem Kontext anstelle von Konstanten bestimmt.
  • Die dritte Unterstützungsebene wurde für die Plattform powerpc64le-unknown-freebsd 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