Rust 1.97 rend plusieurs détails de compilation plus lisibles et plus simples à automatiser. Le schéma de mangling v0 devient la valeur par défaut, Cargo accepte CARGO_BUILD_WARNINGS=deny et les messages du linker apparaissent désormais comme un diagnostic distinct. Ces changements ne bouleversent pas le langage, mais ils réduisent le temps perdu dans les pipelines et les erreurs natives.
La réponse rapide
| Question | Réponse |
|---|---|
| Qu’est-ce que le mangling v0 ? | Le format qui encode les noms Rust dans les symboles binaires. |
| Pourquoi changer l’ancien format ? | v0 représente mieux les génériques et produit des diagnostics plus exploitables. |
| Comment refuser les warnings en CI ? | Avec CARGO_BUILD_WARNINGS=deny. |
Pourquoi ne pas utiliser RUSTFLAGS=-Dwarnings ? | Modifier RUSTFLAGS peut invalider davantage d’artefacts du cache. |
| Faut-il modifier le code source ? | Généralement non, sauf dépendance à des noms de symboles ou avertissements existants. |
Des symboles plus compréhensibles
Le compilateur transforme les noms de fonctions Rust en symboles utilisables par l’éditeur de liens. Les génériques, modules et types produisent des noms complexes. Le format v0 encode plus fidèlement ces informations et aide les profileurs, débogueurs et outils de démangling à restituer un nom humain.
La plupart des applications ne verront aucun changement fonctionnel. Les outils qui analysent directement les symboles, scripts de taille binaire ou intégrations natives doivent toutefois être testés. L’ancien schéma reste encore accessible dans certaines conditions nocturnes, mais sa disparition est prévue : mieux vaut corriger les outils que figer le compilateur.
Refuser les warnings sans casser le cache
Beaucoup de projets imposent zéro avertissement dans la CI avec RUSTFLAGS=-Dwarnings. Cette variable participe aux paramètres de compilation et peut provoquer une reconstruction lorsque sa valeur diffère entre le poste et le pipeline.
CARGO_BUILD_WARNINGS=deny porte la politique au niveau de Cargo. Une équipe peut conserver les mêmes artefacts tout en transformant les avertissements du projet en échecs de CI. La valeur allow sert au comportement inverse dans un contexte temporaire.
Une politique stricte exige de maîtriser les versions. Une nouvelle version de Rust peut ajouter un lint et faire échouer un projet inchangé. Épinglez la toolchain, traitez les avertissements lors de la mise à jour et évitez de masquer globalement un lint sans justification.
Les messages du linker remontent enfin correctement
Un échec de linkage peut venir d’une bibliothèque système absente, d’un ordre incorrect, d’une architecture différente ou d’un symbole non résolu. Rust 1.97 affiche les messages du linker par défaut au travers d’un diagnostic spécial, au lieu de les noyer ou de demander une option supplémentaire.
Le gain est particulièrement utile dans un conteneur minimal et sur les bindings C/C++. Le message reste parfois cryptique, mais l’information originale est disponible plus tôt dans le journal CI.
Une mise à jour à faible risque, à vérifier
Lancez la suite de tests sur toutes les cibles, inspectez les outils de profilage et comparez la taille des binaires. Activez ensuite CARGO_BUILD_WARNINGS=deny sur une branche avant de l’imposer à tous les contributeurs. Vérifiez aussi les images de build qui fournissent les bibliothèques natives.
La version stabilise enfin plusieurs API const, notamment sur les bits des entiers et char::is_control, ce qui autorise davantage de calcul au moment de la compilation sans contournement.
Rust 1.97 est une version d’outillage plus que de syntaxe. Elle rend les binaires et les erreurs plus observables, tout en donnant à la CI un contrôle des warnings mieux adapté au cache.




La discussion
Commentaires
Chargement des commentaires…