Quoi de neuf dans Rust 1.48

L'approche unique du langage de programmation Rust se traduit par un meilleur code avec moins de compromis que C, C ++, Go et les autres langages que vous utilisez probablement. Il est également mis à jour régulièrement, souvent tous les mois.

Où télécharger la dernière version de Rust

Si vous avez déjà installé une version précédente de Rust via rustup, vous pouvez accéder à la dernière version via la commande suivante:

$ rustup update stable

Vidéo connexe: Développement de logiciels plus sûrs avec Rust

Soyez rapidement au courant du nouveau venu Rust, conçu pour créer des logiciels rapides au niveau du système. Cet explicatif animé de deux minutes montre comment Rust contourne les problèmes de programmation épineux de la mémoire et de la gestion.

Les nouvelles fonctionnalités de Rust 1.48.0

Dévoilé le 19 novembre 2020, Rust 1.48.0 propose des liens plus faciles dans l'outil de documentation de la bibliothèque Rustdoc, avec une syntaxe pour informer Rustdoc lorsque les développeurs essaient de créer un lien vers un type; Les URL seront générées. Egalement en version 1.48.0:

  • Les développeurs peuvent spécifier #{doc(alias = “”) ]sur les éléments d'ajouter des alias de recherche lors de la recherche dans l'interface utilisateur Rustdoc.
  • Le unsafemot-clé est désormais syntaxiquement autorisé sur les modules. Bien que toujours rejeté sémantiquement, cela peut maintenant être analysé par des macros procédurales.
  • Dans le compilateur, l' -C link-self-contained=indicateur du compilateur est stabilisé. Cela indique rustcs'il faut lier son propre runtime C et ses bibliothèques ou s'appuyer sur un éditeur de liens externe pour les trouver. Ceci est uniquement pris en charge windows-gnu, linux-muslet les wasiplates - formes.
  • Dans la bibliothèque, l' API est désormais stable. Les développeurs peuvent l'utiliser pour essayer de transformer un vecteur en un tableau d'une longueur donnée. En outre stabilisé dans ce communiqué étaient cinq autres API: , , , et .[T; N]: TryFrom slice::as_ptr_rangeslice::as_mut_ptr_rangeVecDeque::make_contiguousfuture::pendingfuture::ready
  • Également dans la bibliothèque, tous les tableaux de toute longueur sont désormais implémentés .TryFrom

Les nouvelles fonctionnalités de Rust 1.47.0

Annoncé le 8 octobre 2020, Rust 1.47.0 n'a pas de nouvelles fonctionnalités de langage mais améliore la bibliothèque standard. Des améliorations de la qualité de vie et de la chaîne d'outils ainsi que des stabilisations de bibliothèque sont présentées dans la version. Des notes de version ont été publiées pour la mise à niveau.

Les fonctionnalités spécifiques de Rust 1.47.0 incluent:

  • Une fonctionnalité «const generics», ayant un impact sur les traits sur des tableaux plus grands. La fonctionnalité doit encore être stabilisée. Rust a manqué d'un moyen d'être générique sur des valeurs entières, ce qui a causé des problèmes avec les tableaux. Cette fonctionnalité est destinée à résoudre ce problème et à rendre les tableaux plus utiles.
  • Une mise à niveau de l'infrastructure du compilateur LLVM 11, ce qui en fait la valeur par défaut.
  • Des backtraces plus courtes, ce qui facilite la recherche des problèmes.
  • rustcprend désormais en charge -C control-flow-guard, une option qui activera la fonction de sécurité Control Flow Guard sous Windows. Les autres plates-formes ignorent cet indicateur.
  • Rustdoc prend désormais en charge le thème Ayu.
  • Neuf API de la bibliothèque standard ont été stabilisées: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: leak, pointer :: offset_from, f32 :: TAU et f64 :: TAU. 

Les nouvelles fonctionnalités de la 1.46.0

Rust 1.46, annoncé le 27 août 2020, comprend les fonctionnalités suivantes:

  • Plusieurs caractéristiques linguistiques de base peuvent maintenant être utilisés const fn, y compris if, if letmatchet plusieurs autres.
  • Un #[track_caller]attribut, conçu pour améliorer les messages d'erreur lorsque unwrapet les fonctions associées paniquent, est désormais stable.
  • Dans un changement à la bibliothèque, std::mem::forgetest maintenant un fichier const fn. Toujours dans la bibliothèque, deux nouvelles API ont été stabilisées: Option::zipet vec::Drain::as_slice.
  • Pour le compilateur, la citylibcible peut être utilisée sur les plates-formes Apple iOS et tvOS.
  • L'indexation récursive dans les tuples ne nécessite plus de parenthèses.

Les nouvelles fonctionnalités de Rust 1.45.0

Annoncé le 16 juillet 2020, Rust 1.45 comprend les ajouts et améliorations suivants:

  • Un correctif est proposé pour réparer certains défauts de longue date lors de la conversion entre entiers et flottants.
  • La stabilisation est offerte pour les macros procédurales de type fonction dans les expressions, les modèles et les instructions. L'expansion de l'utilisation des macros facilite l'utilisation du framework Web Rocket pour Rust.
  • Plusieurs API bibliothèque ont été stabilisés, tels que Arc::as_ptr, BTreeMap::remove_entryet Span::resolved_at. La liste complète des API est disponible sur le blog Rust.

Les nouvelles fonctionnalités de Rust 1.43.1

Cette version intermédiaire a été introduite le 7 mai 2020 pour traiter deux régressions introduites dans la version stable 1.43.0. Il met également à jour la version OpenSSL utilisée par le gestionnaire de colis Cargo. Les fonctionnalités incluent:

  • Rust 1.27 a introduit la prise en charge de la détection des fonctionnalités du processeur x86 dans la bibliothèque standard, via la is_x86_feature_detected macro. En raison d'une refactorisation interne, Rust 1.43.0 a empêché la détection de fonctionnalités qui ne peuvent pas encore être utilisées sur stable, même si leur détection était précédemment autorisée. La version 1.43.1 corrige cette régression.
  • Un correctif est proposé pour une cargo package –list commande interrompue . Rust 1.43 a interrompu la prise en charge de la liste des fichiers inclus dans les packages publiés avec Cargo, lorsqu'il était exécuté dans un espace de travail avec des dépendances de chemin ou des versions non publiées.
  • OpenSSL, une dépendance Cargo, a été mis à jour vers 1.1.1g. OpenSSL avait publié un avis de sécurité mais l'équipe Rust n'a pas pu inclure le correctif à temps pour Rust 1.43.0. L'équipe n'a aucune preuve que la vulnérabilité pourrait compromettre la sécurité des utilisateurs de Cargo.

Les nouvelles fonctionnalités de Rust 1.43.0

Annoncée le 23 avril 2020, Rust 1.43.0 était considérée comme une version assez mineure, sans fonctionnalités majeures introduites. Les changements incluent:

  • Les développeurs peuvent utiliser des itemfragments à des éléments Interpole dans le corps trait, implet des externblocs.
  • L'inférence de type autour des primitives, des références et des opérations binaires a été améliorée.
  • Pour faciliter les tests d'intégration, Cargo définira de nouvelles variables d'environnement pour les tests afin de trouver des exécutables.
  • Dans la bibliothèque Rust, les développeurs peuvent utiliser directement les constantes associées sur les flottants et les entiers sans avoir à importer le module. En outre, il existe un nouveau primitivemodule qui réexporte les types primitifs Rust, ce qui est utile lors de l'écriture d'une macro et les développeurs veulent s'assurer que les types ne sont pas masqués.
  • 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.

Les nouvelles fonctionnalités de Rust 1.35

La version 1.35, publiée en mai 2019, offre les éléments suivants: