Version du langage de programmation Rust 1.54

La version du langage de programmation système Rust 1.54, fondé par le projet Mozilla, mais désormais développé sous les auspices de l'organisation indépendante à but non lucratif Rust Foundation, a été publiée. Le langage se concentre sur la sécurité de la mémoire, assure une gestion automatique de la mémoire et fournit les moyens d'atteindre un parallélisme élevé des tâches sans utiliser de garbage collector ou d'exécution (le temps d'exécution est réduit à l'initialisation et à la maintenance de base de la bibliothèque standard).

La gestion automatique de la mémoire de Rust élimine les erreurs lors de la manipulation des pointeurs et protège contre les problèmes résultant de la manipulation de la mémoire de bas niveau, tels que l'accès à une région mémoire après sa libération, les déréférences de pointeurs nuls, les dépassements de tampon, etc. Pour distribuer les bibliothèques, assurer l'assemblage et gérer les dépendances, le projet développe le gestionnaire de packages Cargo. Le référentiel crates.io est pris en charge pour l'hébergement de bibliothèques.

Principales nouveautés :

  • Ajout de la possibilité d'utiliser des macros de type fonction dans les attributs (macros procédurales et macros créées à l'aide de la macro « macro_rules ! »). Ces macros se distinguent des fonctions par le symbole « ! » après le nom (macro!(...)) et en remplaçant le texte source de la macro au lieu de générer un appel de fonction. L'appel de macros dans les attributs peut être utile pour inclure le contenu d'autres fichiers dans la documentation des commentaires. Par exemple, pour insérer le contenu du fichier README et le résultat de l'exécution du script, vous pouvez spécifier : #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod généré ;
  • Les fonctions intégrées du compilateur (Intrinsics) pour la plateforme wasm32 ont été stabilisées, permettant l'utilisation d'instructions SIMD dans WebAssembly. La plupart des fonctions, telles que v128_bitselect, sont disponibles en mode « sans échec », mais certaines fonctions qui fonctionnent avec des pointeurs (par exemple, v128_load) restent « non sécurisées ».
  • L'utilisation par défaut de la compilation incrémentielle est revenue, vous permettant de reconstruire uniquement les parties modifiées du code, ce qui peut réduire considérablement le temps nécessaire à la construction d'un projet lors de la recompilation après avoir apporté des modifications mineures. La compilation incrémentielle a été désactivée dans la version 1.52.1 en raison de bogues cachés apparus après l'ajout d'une vérification supplémentaire pour le chargement des données à partir du cache disque.
  • Une nouvelle partie des API a été transférée dans la catégorie stable, dont les stabilisées suivantes :
      BTreeMap :: into_keys
    • BTreeMap :: into_values
    • HashMap :: into_keys
    • HashMap :: into_values
    • arch::wasm32
    • VecDeque ::binary_search
    • VecDeque ::binary_search_by
    • VecDeque ::binary_search_by_key
    • VecDeque ::partition_point
  • Options ajoutées à cargo-tree : « -prune " pour supprimer un package du graphe de dépendances, "-deep" pour afficher uniquement les éléments d'un niveau d'imbrication donné dans l'arborescence des dépendances, "-edges no-proc-macro" pour masquer les dépendances des macros procédurales.

Source: opennet.ru

Ajouter un commentaire