IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 1.97 du langage de programmation Rust est disponible et intègre le mangling des symboles activé par défaut ainsi qu'une prise en charge de Cargo permettant de désactiver les avertissements

Le , par Alex

168PARTAGES

4  0 
Rust 1.97 est désormais disponible, faisant progresser les objectifs du langage de programmation en matière de performances, de sécurité des types, de concurrence et de sécurité de la mémoire. L’un des principaux changements techniques réside dans l’adoption d’un schéma de mangling des symboles spécifique à Rust comme valeur par défaut sur la branche stable. À partir de cette version, les informations détaillées sur le chemin d’accès aux modules et aux crates sont conservées dans les noms manglés, et l’ancien schéma est désormais limité aux builds nightly. S'appuyant sur ces mises à jour, Cargo, le gestionnaire de paquets de Rust, permet désormais aux utilisateurs de contrôler la manière dont les avertissements sont gérés : les avertissements peuvent être masqués, affichés ou ignorés sans invalider le cache de compilation.

Rust est un langage de programmation polyvalent qui met l'accent sur les performances, la sécurité des types, la concurrence et la sécurité de la mémoire. Rust prend en charge plusieurs paradigmes de programmation. Il s'inspire de concepts issus de la programmation fonctionnelle, notamment l'immuabilité, les fonctions d'ordre supérieur, les types de données algébriques et la correspondance de motifs. Il prend également en charge la programmation orientée objet via des structures, des énumérations, des traits et des méthodes. Rust garantit la sécurité de la mémoire (c'est-à-dire que toutes les références pointent vers une mémoire valide) sans recourir à un ramasse-miettes classique ; à la place, les erreurs de sécurité de la mémoire et les conflits d'accès sont évités par le « vérificateur d'emprunt », qui suit la durée de vie des objets référencés lors de la compilation.

Rust 1.97 est désormais disponible, faisant progresser les objectifs du langage de programmation en matière de performances, de sécurité des types, de concurrence et de sécurité de la mémoire. L’un des principaux changements techniques réside dans l’adoption d’un schéma de mangling des symboles spécifique à Rust comme valeur par défaut sur la branche stable. Auparavant, Rust utilisait une approche basée sur l’Itanium Application Binary Interface, qui nécessitait parfois un démangling personnalisé et pouvait masquer les instanciations de paramètres génériques derrière des hachages. À partir de cette version, les informations détaillées sur le chemin d’accès aux modules et aux crates sont conservées dans les noms manglés, et l’ancien schéma est désormais limité aux builds nightly.

S'appuyant sur ces mises à jour, Cargo, le gestionnaire de paquets de Rust, permet désormais aux utilisateurs de contrôler la manière dont les avertissements sont gérés : les avertissements peuvent être masqués, affichés ou ignorés sans invalider le cache de compilation. Cela permet d’effectuer des modifications temporaires de configuration sans ralentir les cycles de développement. De plus, le compilateur rustc émettra par défaut les messages de l’éditeur de liens sous forme d’avertissements de lint, afin de remédier aux cas où une sortie supprimée pourrait masquer des problèmes. rustc continuera à filtrer les messages identifiés comme des faux positifs ou intentionnels.

Enfin, Rust 1.97 stabilise plusieurs API et inclut des améliorations supplémentaires, faisant ainsi évoluer davantage les fonctionnalités du langage et les outils de développement. Cette annonce intervientt alors que Greg Kroah-Hartman, responsable de la maintenance du noyau stable de Linux, affirme que Rust peut aider Linux à faire face à un afflux de failles de sécurité détectées par l'IA (notamment Dirty Frag, Copy Fail et Fragnesia) en prévenant les erreurs courantes en C liées à la gestion de la mémoire, au verrouillage, à la gestion des erreurs et aux données non fiables dès la phase de compilation, plutôt que lors de la révision par les mainteneurs. Sa sortie est de nature à donner un coup de neuf au débat sur la comparaison entre les langages Rust et C en matière de programmation système.


Voici l'annonce de Rust 1.97 :

Nouveautés de la version stable 1.97.0

Le mangling des symboles v0 est activé par défaut

Lorsque Rust est compilé en fichiers objets et en binaires, chaque élément (fonctions, variables statiques, etc.) doit disposer d’un « symbole » unique au niveau global qui l’identifie. Afin d’éviter les conflits lors de la liaison de différents programmes Rust, Rust modifie le nom d’origine des éléments pour y inclure des informations contextuelles supplémentaires, telles que le chemin d’accès au module, le crate de définition, les génériques, etc. Historiquement, ce mangling était basé sur l’ABI Itanium, également (parfois) utilisée par le C++.

Le nouveau schéma de mangling résout un certain nombre d’inconvénients du précédent :

- Les instanciations de paramètres génériques conservent leurs valeurs, au lieu d’être uniquement identifiées par un hachage
- Incohérences : toutes les parties n’utilisaient pas l’ABI Itanium, ce qui rendait encore nécessaire un démangling personnalisé

Depuis Rust 1.59, le compilateur permet d’opter pour un schéma de mangling spécifique à Rust via l’option -Csymbol-mangling-version=v0. Depuis novembre 2025, ce schéma est activé par défaut sur la version nightly, et la version 1.97 l’active désormais sur la version stable de Rust. L’ancien schéma de mangling ne peut être activé que sur la version nightly, et il est actuellement prévu de le supprimer complètement.

Prise en charge par Cargo de la suppression des avertissements

Il est courant de supprimer les avertissements en CI. Historiquement, cela se faisait généralement via RUSTFLAGS=-Dwarnings. Avec Rust 1.97, Cargo contrôle la manière dont les avertissements interagissent avec la réussite de la compilation : soit en les masquant (via le niveau allow ), soit en les affichant sans entraîner d’échec (par défaut, warn), soit en les supprimant (via deny).

Comme c’est la configuration de Cargo qui détermine ce comportement, l’utilisation de cette fonctionnalité n’invalide pas le cache de compilation sous-jacent, ce qui signifie qu’il est facile de l’activer temporairement. Par exemple, si les avertissements génèrent un bruit indésirable pendant que vous corrigez des erreurs après une refactorisation, vous pouvez exécuter CARGO_BUILD_WARNINGS=allow cargo check pour les désactiver temporairement.

En CI, les tâches peuvent plutôt définir CARGO_BUILD_WARNINGS=deny pour ignorer les avertissements. Cela peut être combiné avec l’option --keep-going pour collecter toutes les erreurs et tous les avertissements plutôt que de s’arrêter dès le premier paquet en échec.

La sortie de l'éditeur de liens n'est plus masquée par défaut

rustc lance un éditeur de liens pour le compte des utilisateurs. Auparavant, rustc masquait par défaut la sortie de l'éditeur de liens si la liaison aboutissait. Cela pouvant toutefois masquer de réels problèmes, nous activons par défaut les messages de l'éditeur de liens dans Rust 1.97. Ceux-ci sont émis sous forme d'avertissement de lint, par exemple :

Code : Sélectionner tout
1
2
3
warning: linker stderr: ignoring deprecated linker optimization setting '1'
  |
  = note: `#[warn(linker_messages)]` on by default


Les messages courants de l’éditeur de liens qui ont été identifiés comme des faux positifs ou un comportement intentionnel sont filtrés par rustc. Plusieurs bogues ont déjà été corrigés grâce au fait que cette sortie n’est plus masquée dans les versions nightly.

Notez qu’actuellement, linker_messages est un lint spécial qui n’est pas affecté par le groupe de lints warnings. Ceci est intentionnel, car rustc ne contrôle généralement pas la sortie de l’éditeur de liens de manière aussi précise, et il n’est pas rare que la sortie n’apparaisse que sur certaines plateformes. Si vous constatez ce que vous pensez être un faux positif provenant de l’éditeur de liens, veuillez ouvrir un ticket.

Pour désactiver l’avertissement en attendant, vous pouvez configurer le niveau de lint sur allow. Cela peut être fait via Cargo.toml en ajoutant une section lints comme celle-ci :

Code : Sélectionner tout
1
2
[lints.rust]
linker_messages = "allow"


Source : Annonce Rust 1.97

Et vous ?

Pensez-vous que cette version est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

La version 1.96.0 du langage de programmation Rust est disponible, apportant de nouveaux types Range*, de nouvelles macros stabilisées et des corrections de vulnérabilités dans Cargo

Rust a-t-il atteint son plafond de popularité ? Le langage recule de trois places dans l'index TIOBE d'avril 2026. Son PDG évoque une « courbe d'apprentissage difficile pour les développeurs non experts »

C'est désormais officiel : Rust dans le noyau Linux sort du cadre expérimental. Le Rust vient de faire l'objet d'intégration comme partie essentielle du kernel aux côtés du toujours présent langage C
Vous avez lu gratuitement 12 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !