Il y a quelques jours, il a été annoncé nouvelle version du langage de programmation populaire «Rouille 1.71″version dans laquelle un grand nombre d’API ont été stabilisées, ainsi que différentes sections, améliorations et bien d’autres choses ont été introduites.
Pour ceux qui ne connaissent pas ce langage de programmation, ils doivent savoir que se concentre sur la sécurité de la mémoire et fournit les moyens d’atteindre un parallélisme élevé des tâches tout en évitant l’utilisation d’un ramasse-miettes et d’un temps d’exécution (le temps d’exécution est réduit à l’initialisation de base et à la maintenance standard de la bibliothèque).
Les méthodes de gestion de la mémoire de Rust ils évitent au développeur les erreurs lors de la manipulation des pointeurs et protègent contre les problèmes qui surviennent en raison de la gestion de la mémoire de bas niveau, comme l’accès à une zone mémoire après qu’elle a été libérée, le déréférencement de pointeurs nuls, les débordements de tampon, etc. Pour distribuer les bibliothèques, fournir des builds et gérer les dépendances, le projet développe le gestionnaire de packages Cargo.
Principales nouveautés de Rust 1.71
Dans cette nouvelle version qui vient de Rust 1.71 Il est souligné que l’ABI externe “C-unwind” a été stabilisé, qui diffère de l’ABI sans le suffixe “-unwind” (“extern “C”‘) en maintenant un comportement sûr si le processus de déroulement initié par un plantage de programme ou le lancement d’une exception de style C++ franchit une limite ABI. Il convient de noter qu’une future version de Rust cherchera à modifier ces ABI pour correspondre au comportement spécifié dans le cadre de la stabilisation de cette fonctionnalité.
Un autre changement qui se démarque est le prise en charge stabilisée des attributs ‘#[debug_visualizer(natvis_file = «…»)]’ et ‘#[debug_visualizer(gdb_script_file = «…»)]’ce que leAutoriser l’intégration des métadonnées Microsoft Natviz et des scripts GDB dans les bibliothèques Rust pour améliorer la sortie de débogage lors de l’inspection des structures de données créées par les bibliothèques. De tels scripts sont déjà inclus pour la bibliothèque standard et il est maintenant possible de les inclure pour les bibliothèques tierces.
En plus de cela, on note également que Cargo optimise son utilisation sous rustup Lorsque Cargo détecte que rustc sera exécuté en pointant vers un proxy Rustup, il essaiera de contourner le proxy et d’utiliser directement le binaire sous-jacent. Il existe des hypothèses sur l’interaction avec rustup et RUSTUP_TOOLCHAIN. Cependant, il ne devrait pas affecter les utilisateurs normaux.
D’autre part, sous Windows, il est possible d’utiliser les fonctions des librairies dynamiques qui ne sont pas disponibles au moment de la compilation (par exemple, pour éviter d’installer des bibliothèques inutiles dans l’environnement de construction et pour simplifier la compilation croisée).
Il est également souligné que le prise en charge de troisième niveau pour la plate-forme x86_64 h-apple-darwin. Le troisième niveau implique un support de base, mais sans tests automatisés, publication de versions officielles et vérification de la capacité à compiler le code.
Parmi les autres changements qui ressortent dans cette nouvelle version :
- Les plates-formes cibles utilisant la bibliothèque Musl C ont été migrées vers Musl version 1.2.3 (auparavant la version 1.1.24 était utilisée), ce qui permet l’utilisation du type time64 sur les systèmes 32 bits.
- La bibliothèque standard fournit une variante de la macro thread_local qui est initialisée avec l’attribut “const”, qui peut être utilisé dans le contexte au lieu de constantes, vous permettant de générer un code plus optimal.
- Une nouvelle partie de l’API a été déplacée vers stable, y compris les méthodes et les implémentations de traits qui ont été stabilisées :
- L’attribut “const”, qui détermine la possibilité d’utiliser dans n’importe quel contexte à la place des constantes, est utilisé dans les fonctions :
- Le gestionnaire de packages Cargo vous permet de spécifier des options nommées debuginfo dans le fichier Cargo.toml.
- Flatten-format-args est activé par défaut.
- Rust prend également en charge la liaison aux symboles fournis par DLL par ordinal au lieu d’un symbole nommé, en utilisant le nouvel attribut #[link_ordinal].
- Ajout de l’option workspace_default_members aux métadonnées. Lors de l’exécution des commandes “cargo new” et “cargo init”, les champs de l’espace de travail sont automatiquement hérités.
- Un support de deuxième niveau a été implémenté pour la plate-forme cible loongar64-unknown-linux-gnu.
Siestes intéressé à en savoir plus, Vous pouvez vérifier les détails dans le lien suivant.
Enfin, pour ceux qui sont Intéressé par une mise à niveau à partir d’une version précédente de Rust installé via rustup, vous pouvez obtenir la nouvelle version de Rust 1.71.0 avec :
rustup update stable