Was ist neu in Rust 1.48?

Der einzigartige Ansatz der Programmiersprache Rust führt zu besserem Code mit weniger Kompromissen als C, C ++, Go und die anderen Sprachen, die Sie wahrscheinlich verwenden. Es wird auch regelmäßig aktualisiert, oft jeden Monat.

Wo kann man die neueste Rust-Version herunterladen?

Wenn Sie bereits eine frühere Version von Rust über installiert haben rustup, können Sie über den folgenden Befehl auf die neueste Version zugreifen:

$ rustup update stabil

Zugehöriges Video: Entwicklung sicherer Software mit Rust

Machen Sie sich schnell mit dem Newcomer Rust vertraut, der für die Erstellung schneller Software auf Systemebene entwickelt wurde. Dieser zweiminütige animierte Erklärer zeigt, wie Rust die lästigen Programmierprobleme von Speicher und Verwaltung umgeht.

Die neuen Funktionen in Rust 1.48.0

Rust 1.48.0 wurde am 19. November 2020 vorgestellt und bietet eine einfachere Verknüpfung im Dokumentationswerkzeug der Rustdoc-Bibliothek. Die Syntax informiert Rustdoc, wenn Entwickler versuchen, eine Verknüpfung zu einem Typ herzustellen. URLs werden generiert. Auch in Version 1.48.0:

  • Entwickler können #{doc(alias = “”) ]beim Durchsuchen der Rustdoc-Benutzeroberfläche Elemente angeben , um Suchaliasnamen hinzuzufügen.
  • Das unsafeSchlüsselwort ist jetzt für Module syntaktisch zulässig. Während dies noch semantisch abgelehnt wird, kann dies jetzt durch prozedurale Makros analysiert werden.
  • Im Compiler wird das -C link-self-contained=Compiler-Flag stabilisiert. Hier rustcerfahren Sie , ob Sie Ihre eigene C-Laufzeit und Bibliotheken verknüpfen oder sich auf einen externen Linker verlassen müssen, um sie zu finden. Dies wird nur auf windows-gnu, linux-muslund wasiPlattformen.
  • In der Bibliothek ist die API jetzt stabil. Entwickler können damit versuchen, einen Vektor in ein Array einer bestimmten Länge umzuwandeln. Auch in dieser Version stabilisiert waren fünf andere APIs: , , , , und .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Auch in der Bibliothek werden jetzt alle Arrays beliebiger Länge implementiert .TryFrom

Die neuen Funktionen in Rust 1.47.0

Rust 1.47.0 wurde am 8. Oktober 2020 angekündigt und verfügt über keine neuen Sprachfunktionen, erweitert jedoch die Standardbibliothek. Verbesserungen der Lebensqualität und der Toolchain sowie Stabilisierungen der Bibliothek sind in der Version enthalten. Für das Upgrade wurden Versionshinweise veröffentlicht.

Zu den spezifischen Funktionen in Rust 1.47.0 gehören:

  • Eine "const generics" -Funktion, die sich auf größere Arrays auswirkt. Die Funktion muss noch stabilisiert werden. Rust hat es an einer Möglichkeit gefehlt, über ganzzahlige Werte generisch zu sein, was zu Problemen mit Arrays geführt hat. Diese Funktion soll dieses Problem beheben und Arrays nützlicher machen.
  • Ein Upgrade auf die LLVM 11-Compiler-Infrastruktur, das zum Standard wird.
  • Kürzere Rückverfolgungen erleichtern das Auffinden von Problemen.
  • rustcUnterstützt jetzt -C control-flow-guardeine Option, mit der die Sicherheitsfunktion von Control Flow Guard unter Windows aktiviert wird. Andere Plattformen ignorieren dieses Flag.
  • Rustdoc unterstützt jetzt das Ayu-Thema.
  • Neun APIs in der Standardbibliothek wurden stabilisiert: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Ergebnis :: as_deref, Ergebnis :: as_deref_mut, Vec :: leak, Zeiger :: offset_from, f32 :: TAU und f64 :: TAU. 

Die neuen Funktionen in 1.46.0

Rust 1.46, angekündigt am 27. August 2020, enthält die folgenden Funktionen:

  • Mehrere Kernsprachfunktionen können nun in verwendet werden const fn, einschließlich if, if letmatch, und einige andere.
  • Ein #[track_caller]Attribut, mit dem Fehlermeldungen verbessert werden sollen, wenn unwrapund verwandte Funktionen in Panik geraten, ist jetzt stabil.
  • Bei einer Änderung der Bibliothek std::mem::forgethandelt es sich nun um eine const fn. Ebenfalls in der Bibliothek wurden zwei neue APIs stabilisiert: Option::zipund vec::Drain::as_slice.
  • Für den Compiler kann das citylibZiel auf Apple iOS- und tvOS-Plattformen verwendet werden.
  • Für die rekursive Indizierung in Tupel sind keine Klammern mehr erforderlich.

Die neuen Funktionen in Rust 1.45.0

Rust 1.45 wurde am 16. Juli 2020 angekündigt und enthält die folgenden Ergänzungen und Verbesserungen:

  • Es wird ein Fix angeboten, um eine langjährige Unklarheit beim Gießen zwischen Ganzzahlen und Floats zu beheben.
  • Stabilisierung wird für funktionsähnliche prozedurale Makros in Ausdrücken, Mustern und Anweisungen angeboten. Die Erweiterung der Verwendung von Makros unterstützt die Verwendung des Rocket-Webframeworks für Rust.
  • Mehrere Bibliothek APIs stabilisiert wurde, wie Arc::as_ptr, BTreeMap::remove_entryund Span::resolved_at. Die vollständige Liste der APIs finden Sie im Rust-Blog.

Die neuen Funktionen in Rust 1.43.1

Diese Punktveröffentlichung wurde am 7. Mai 2020 eingeführt, um zwei Regressionen zu behandeln, die in der stabilen Version 1.43.0 eingeführt wurden. Außerdem wird die vom Cargo-Paketmanager verwendete OpenSSL-Version aktualisiert. Features sind:

  • Mit Rust 1.27 wurde die Unterstützung für die Erkennung von x86-CPU-Funktionen in der Standardbibliothek über das is_x86_feature_detected Makro eingeführt. Aufgrund eines internen Refactorings verhinderte Rust 1.43.0 die Erkennung von Features, die noch nicht für Stable verwendet werden können, obwohl die Erkennung zuvor zulässig war. Version 1.43.1 behebt diese Regression.
  • Für fehlerhafte cargo package –list Befehle wird ein Fix angeboten . Rust 1.43 hat die Unterstützung für das Auflisten von Dateien, die in mit Cargo veröffentlichten Paketen enthalten sind, unterbrochen, wenn sie in einem Arbeitsbereich mit Pfadabhängigkeiten oder unveröffentlichten Versionen ausgeführt werden.
  • OpenSSL, eine Frachtabhängigkeit, wurde auf 1.1.1g aktualisiert. OpenSSL hatte einen Sicherheitshinweis veröffentlicht, aber das Rust-Team konnte den Fix nicht rechtzeitig für Rust 1.43.0 einbinden. Das Team hat keine Beweise dafür, dass die Sicherheitsanfälligkeit die Sicherheit der Frachtbenutzer gefährden könnte.

Die neuen Funktionen in Rust 1.43.0

Rust 1.43.0 wurde am 23. April 2020 angekündigt und galt als relativ kleine Version, ohne dass wesentliche Funktionen eingeführt wurden. Änderungen umfassen:

  • Entwickler können verwendet werden itemFragmente zu interpolieren Elemente in den Körper trait, implund externBlöcke.
  • Die Typinferenz um Grundelemente, Referenzen und binäre Operationen wurde verbessert.
  • Um Integrationstests zu unterstützen, legt Cargo einige neue Umgebungsvariablen für Tests fest, um ausführbare Dateien zu finden.
  • In der Rust-Bibliothek können Entwickler zugehörige Konstanten für Floats und Ganzzahlen direkt verwenden, ohne das Modul importieren zu müssen. Außerdem gibt es ein neues primitiveModul, das primitive Rust-Typen erneut exportiert. Dies ist nützlich, wenn Sie ein Makro schreiben und Entwickler sicherstellen möchten, dass Typen nicht im Schatten liegen.
  • Several APIs in the library were stabilized: Once::is_completed, f32::LOG10_2, f32::LOG2_10, f32::LOG10_2, f64::LOG10_2, f64::LOG2_10, and iter::once_with.

The new features in Rust 1.41

The new features in Rust 1.38

Rust 1.38, released in September 2019, contains the following new features and improvements:

  • The Cargo package manager will take advantage of pipelined compilation automatically with Rust 1.38. With pipelined compilation, the compiler does not need dependencies fully built when compiling a crate. All that is needed is their metadata, such as the list of types of dependencies. Metadata is produced early in the compilation process. Some tests have shown compilation speed increases of 10 to 20 percent for optimized, clean builds of some crate graphs. 
  • Linting of some incorrect uses of mem::{unitialized, zeroed}. With this release, the rustc compiler will provide a lint for a narrow class of incorrect initializations using mem::uninitialized or mem::zeroed.
  • Extension of the #[deprecated] attribute to macros. This attribute has allowed crate authors to notify users that an item of their crate is to be deprecated and removed in a future release.
  • Developers can use std::any::type_name to get the name of a type.
  • Stabilization of a number of functions including ::cast and ::cast.

The new features in Rust 1.37

Rust 1.37, released in August 2019, has the following new features and improvements:

  • An ability to refer to enum variants through type. Developers also can refer to enum variants with Self::Variant.
  • The cargo vendor command, previously a separate crate, is now built in to the language. The command fetches project dependencies, unpacks them into the vendordirectory, and displays the configuration snippet needed to use the vendored code during builds.
  • The rustc compiler supports profile-guided optimization, an optimizing technique for ahead-of-time compilers, via -C profile-generate and -C profile-use.
  • Developers can create unnamed const items.

The new features in Rust 1.36

Version 1.36 of the Rust systems programming language was released in July 2019. Rust 1.36 includes the following new features and enhancements:

  • The Future trait, used for declaring asynchronous work, is now stable. Asynchronous operations in Rust have been coming together in bits and pieces for several versions now, with async and await being the last important remaining pieces.
  • The alloc crate, used for managing memory, is now stable. This crate collects all of the pieces of Rust’s standard library that depend on a global memory allocation mechanism, such as Vec. This way, crates that don’t use the standard library can still make use of the allocator by importing alloc separately—useful for environments where you want code sizes to be as lean as possible.
  • A new type, MaybeUninit, allows you to define objects that may consist of uninitialized memory, such as a lazily allocated array. Rust’s previous mechanism for doing this was a function, mem::uninitialized, that posed many hazards in casual use. MaybeUninit provides a safer way to do this that uses the constraints of Rust’s type system.
  • Non-lexical lifetimes, a feature for recent editions of Rust, has been backported to earlier editions. Non-lexical lifetimes make Rust’s borrow-checking mechanism less difficult to work with (in essence, letting you write a broader range of programs that are still valid Rust), and better able to catch problems that the borrow checker missed.

Other improvements:

  • A new implementation for the HashMap type that runs faster and uses less memory.
  • Cargo can now run entirely offline if needed.

Die neuen Funktionen in Rust 1.35

Die im Mai 2019 veröffentlichte Version 1.35 bietet Folgendes: