Release der Systemprogrammiersprache , 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 .
Die automatische Speicherverwaltung in Rust befreit Entwickler von Fehlern bei der Pointer-Manipulation und schützt vor Problemen, die aus der niedrig-leveligen Speicherbearbeitung entstehen, wie beispielsweise der Zugriff auf den Speicher nach dessen Freigabe, das Dereferenzieren von Nullzeigern, Bufferüberläufe und ähnliches. Zur Verbreitung von Bibliotheken, zur Sicherstellung des Builds und zur Verwaltung der Projektabhängigkeiten wird ein Paketmanager entwickelt. , 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 .
Im Text der Ankündigung der neuen Version haben sich die Rust-Entwickler in die Politik eingemischt und sich demonstrativ geweigert, eine vollständige Übersicht der Änderungen in Rust 1.44 zu veröffentlichen, um ihre Solidarität mit den Protestierenden gegen Polizeigewalt zu zeigen, und betont, dass dieses Thema wichtiger sei als der Austausch technischer Kenntnisse. Die Hauptpunkte: :
- Das Paketmanager-Tool Cargo hat den Befehl „cargo tree“ integriert, der eine baumartige Grafik der Abhängigkeiten ausgibt. Außerdem wurde die Option „—duplicates“ („cargo tree -d“) hinzugefügt, mit der die Abhängigkeiten in verschiedenen Versionen eines Pakets bewertet werden können.
mdbook v0.3.2 (/Users/src/rust/mdbook)
├── ammonia v3.0.0
│ ├── html5ever v0.24.0
│ │ ├── log v0.4.8
│ │ │ └── cfg-if v0.1.9
│ │ ├── mac v0.1.1
│ │ └── markup5ever v0.9.0
│ │ ├── log v0.4.8 (*)
│ │ ├── phf v0.7.24
│ │ │ └── phf_shared v0.7.24
│ │ │ ├── siphasher v0.2.3
│ │ │ └── unicase v1.4.2
│ │ │ [build-dependencies]
│ │ │ └── version_check v0.1.5
… - Für nicht an std („#![no_std]“) gebundene Anwendungen wurde die Unterstützung für asynchrone Programmiermethoden implementiert, die auf der Funktion „async“, dem Block async move { … } und dem Operator „.await“ basieren. Diese erleichtern das Schreiben von nicht blockierenden Handlern im Hauptbefehls-Thread.
- Der Parser unterstützt jetzt ein erweiterbares Schema zur Definition der Modulerhierarchie. Zum Beispiel führt die folgende Konstruktion nicht zu einem Fehler, obwohl das Modul „foo/bar/baz.rs“ tatsächlich nicht vorhanden ist (semantisch bleibt die Konstruktion ungültig und kann einen Fehler auslösen, jedoch können die Änderungen auf der Makro- und bedingten Kompilationsebene gesehen und analysiert werden):
#[cfg(FALSE)]
mod foo {
mod bar {
mod baz;
}
} - Im Compiler rustc wurde die Möglichkeit hinzugefügt, das Flag „-C codegen-units“ im inkrementellen Modus zu verwenden. Die Implementierung von catch_unwind wurde überarbeitet, sodass sie jetzt keine Auswirkungen auf die Leistung hat, wenn der Prozess „Unwinding“ ausgeschaltet ist und keine Ausnahmen auftreten.
- Die Unterstützung der dritten Ebene wurde für die Plattformen aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos und x86_64-apple-tvos bereitgestellt. Die dritte Ebene umfasst grundlegende Unterstützung, jedoch ohne automatisierte Tests und die Veröffentlichung offizieller Builds.
- Eine neue Charge von APIs wurde in die stabile Version überführt, einschließlich der Stabilisierung von
PathBuf::with_capacity,
PathBuf::capacity,
PathBuf::clear,
PathBuf::reserve,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::array und
Layout::extend. - Die Funktionen der Standardbibliothek wurden erweitert:
- Eine spezielle Variante von «vec![]» wurde hinzugefügt, die direkt in Vec::new() abgebildet wird, sodass «vec![]» im Kontext anstelle von Konstanten verwendet werden kann.
- In convert::Infallible wurde die Implementierung (impl) des Traits hinzugefügt. .
- In OsString wurden intelligente Zeiger umgesetzt. und , die «&mut OsStr» zurückgeben.
- Unterstützung für Unicode 13 wurde hinzugefügt.
- In String wurde implementiert .
- In IoSlice wurde der Trait implementiert. .
- In Vec wurde From implementiert.
- In proc_macro::LexError wurden fmt::Display und Error implementiert.
- Das Merkmal «const», das die Verwendung in jedem Kontext anstelle von Konstanten definiert, wurde in den Methoden from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes und to_ne_bytes für alle ganzzahligen Typen angewendet.
- Unterstützung für die Erstellung statischer Bibliotheken im Format «.a» anstelle von «.lib» für GNU-Plattformen unter Windows wurde hinzugefügt.
- Die minimalen Anforderungen an LLVM wurden auf die Version LLVM 8 angehoben.
Quelle: opennet.ru
