Menu
Dossiers

Rust 1.99.1 : trois régressions corrigées, dont un bug de retour bool en FFI sur x86_64

Rust 1.99.1 est sortie le 15 octobre 2026. C’est une version corrective : elle ne contient aucune nouveauté, mais elle répare trois régressions apparues dans les versions précédentes. L’une d’elles touche une situation sensible, les fonctions FFI qui renvoient un bool sur x86_64.

En bref
• Rust 1.99.1 a été publiée le 15 octobre 2026 par l’équipe de release du projet.
• Trois régressions sont corrigées : un symbole wcslen manquant, une valeur bool mal transmise en FFI sur x86_64, et rust-lld qui ne trouvait pas libLLVM sur macOS.
• L’annonce ne mentionne ni CVE ni avis de sécurité.
• Mise à jour en une commande : rustup update stable.

Que corrige Rust 1.99.1 ? #

L’annonce officielle sur le blog du projet Rust liste trois correctifs. Tous concernent des régressions : du code qui fonctionnait avant et qui s’est mis à casser, à la compilation, à l’édition de liens ou à l’exécution.

À lire PDF, ZIP, Mo et Go : le petit manuel des fichiers du quotidien

Ce type de version intermédiaire est courant chez Rust. Le compilateur suit un cycle de sortie toutes les six semaines, et une version en « .1 » arrive quand un problème jugé trop gênant ne peut pas attendre la suivante.

Le symbole wcslen absent sur certaines cibles

Une passe d’optimisation de LLVM, nommée loop-idiom-wcslen, peut remplacer une boucle par un appel à wcslen, la fonction C qui mesure une chaîne de caractères larges. Problème : certaines cibles ne fournissent pas cette fonction, ni dans leur libc ni ailleurs. L’édition de liens échouait alors.

D’après l’annonce, les cibles UEFI étaient les plus touchées. La correction ajoute wcslen à la bibliothèque compiler-builtins de Rust, qui sert de solution de repli. Le suivi se trouve dans le ticket n° 163614.

Des booléens faussés en FFI sur x86_64

C’est le correctif le plus délicat. Quand une fonction appelée via l’interface FFI renvoie un bool, l’ABI impose que la valeur soit étendue par des zéros dans le registre de retour. Dans les versions concernées, les bits 1 à 7 de ce registre pouvaient rester indéterminés.

À lire Comment modifier un PDF gratuitement ?

Concrètement, l’appelant pouvait lire une valeur inattendue. Le bug ne se voyait pas forcément en test, ce qui le rend plus pénible qu’une erreur de compilation. Rust 1.99.1 marque de nouveau ce type de retour pour l’extension par des zéros, « comme l’exige l’ABI », précise l’équipe (ticket n° 163911).

rust-lld qui ne trouve pas libLLVM sur macOS

Dernier point : sur macOS, l’éditeur de liens rust-lld pouvait échouer au chargement de libLLVM quand il était lancé sans passer par le proxy de rustup, faute de chemin de recherche des bibliothèques. Il est maintenant compilé avec une entrée rpath qui pointe vers le dossier de libLLVM.dylib (ticket n° 163947).

Qui doit mettre à jour en priorité ? #

Trois profils sont directement concernés. D’abord, les projets qui appellent du code C ou C++ et récupèrent des booléens sur x86_64 : c’est le cas de la plupart des bindings vers des bibliothèques système. Ensuite, les développeurs qui ciblent UEFI ou des environnements embarqués sans libc complète. Enfin, ceux qui appellent rust-lld directement sur Mac, par exemple dans une chaîne de build personnalisée.

Pour les autres, la mise à jour reste conseillée : elle ne change aucune API et ne demande aucune modification de code. Dans un pipeline d’intégration continue qui fixe la version du compilateur, il suffit de passer de 1.99.0 à 1.99.1.

À lire Comment formater une clé USB ?

Comment installer la version 1.99.1 ? #

Avec rustup, une seule commande suffit : rustup update stable. L’équipe invite aussi à tester les canaux beta (rustup default beta) et nightly (rustup default nightly), pour signaler les régressions avant qu’elles n’arrivent en version stable.

Pour vérifier la version active après la mise à jour, rustc --version doit afficher 1.99.1.

Que contenait Rust 1.99.0, sortie le 1er octobre ? #

La version corrigée par ce correctif était plus riche. Selon l’annonce de Rust 1.99.0, publiée le 1er octobre 2026, Rust permet désormais de définir des fonctions variadiques aux ABI « C » et « C-unwind », avec le paramètre .... Jusque-là, on pouvait seulement appeler des fonctions variadiques définies ailleurs.

Ce paramètre a le type VaList, compatible avec le va_list du C. Le trait VaArgSafe détermine quels types on peut en extraire, et appeler une telle fonction reste unsafe.

À lire C’est quoi un fichier CSV ?

La 1.99.0 stabilise aussi Layout::for_value_raw, mem::size_of_val_raw et mem::align_of_val_raw, qui donnent la taille et l’alignement à partir d’un pointeur brut. Côté bibliothèque standard, on note Vec::into_parts et Vec::from_parts, Box::into_non_null, String::from_utf8_lossy_owned ou encore std::fs::set_times.

Une note de compatibilité mérite l’attention : la documentation de Box::leak déconseille désormais de libérer plus tard une mémoire « fuitée » volontairement. Ce schéma peut mal interagir avec les optimisations du compilateur et avec la future stabilisation des allocateurs personnalisés. L’équipe recommande Box::into_non_null ou Box::into_raw à la place.

Questions fréquentes #

Rust 1.99.1 corrige-t-elle une faille de sécurité ?

Non. L’annonce du 15 octobre ne mentionne aucune CVE ni aucun avis de sécurité. Il s’agit de trois régressions fonctionnelles.

Faut-il modifier son code pour passer à 1.99.1 ?

Non. Une version corrective ne change pas les API. Seul le comportement fautif est corrigé.

À lire Comment scanner un document avec son téléphone ?

Le bug des booléens FFI touche-t-il ARM ?

L’annonce ne cite que x86_64 pour ce problème. Elle ne dit rien des autres architectures.

FluxTracker est édité de façon indépendante. Soutenez la rédaction en nous ajoutant dans vos favoris sur Google Actualités :

Dans la même rubrique : Programmation

A decouvrir : agence web 123web · consultant SEO Paris