thejournalofsierraleonestudies.com

La version 1.98 de Rust introduit des méthodes algébriques pour les nombres à virgule flottante, le formatage des entiers avec mise en mémoire tampon et améliore la documentation de ManuallyDrop

La version 1.98 du langage de programmation Rust vient d'être publiée. Réputé pour ses performances, sa sécurité des types, sa concurrence et sa sécurité mémoire, ce langage polyvalent s'enrichit de nouvelles fonctionnalités. Les types à virgule flottante f32 et f64 disposent désormais de méthodes algébriques pour l'addition, la soustraction, la multiplication, la division et le reste. Tous les types entiers primitifs fournissent une méthode format_into avec un tampon spécialisé pour les convers

La version 1.98 du langage de programmation Rust vient d'être publiée. Réputé pour ses performances, sa sécurité des types, sa concurrence et sa sécurité mémoire, ce langage polyvalent s'enrichit de nouvelles fonctionnalités. Les types à virgule flottante f32 et f64 disposent désormais de méthodes algébriques pour l'addition, la soustraction, la multiplication, la division et le reste. Tous les types entiers primitifs fournissent une méthode format_into avec un tampon spécialisé pour les conversions rapides en chaînes de caractères. La documentation relative à ManuallyDrop a également été révisée pour garantir un comportement sûr d'une version à l'autre.

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 les structs, les énumérations, les traits et les méthodes.

Rust 1.98 vient d'être publié. Il s'agit de la dernière version de ce langage de programmation polyvalent, réputé pour ses performances, sa sécurité des types, sa concurrence et sa sécurité mémoire. Parmi les principales nouveautés, les types à virgule flottante f32 et f64 disposent désormais de nouvelles méthodes algébriques pour l’addition, la soustraction, la multiplication, la division et le reste.

Ces méthodes permettent au compilateur d’appliquer des optimisations basées sur les propriétés arithmétiques des nombres réels, même si les limitations de la virgule flottante empêchent certaines propriétés d’être respectées avec précision. Ces méthodes sont non déterministes, ce qui signifie qu’elles peuvent produire des résultats différents en fonction des optimisations du compilateur, mais n’introduisent jamais de comportement indéfini.

De plus, tous les types entiers primitifs fournissent désormais une méthode format_into qui utilise un tampon spécialisé pour produire des représentations sous forme de chaînes décimales. Cette approche contourne une grande partie du dispatch dynamique associé aux macros de formatage avec tampon, offrant ainsi des gains d’efficacité aux développeurs qui ont besoin de conversions rapides d’entiers en chaînes de caractères.

Dans le cadre des efforts visant à assurer la stabilité du langage, la documentation relative à ManuallyDrop a été révisée. Elle garantit désormais que le déplacement d'un ManuallyDrop après que la Box a été libérée n'entraînera pas de comportement indéfini, conformément à une correction introduite pour la première fois dans Rust 1.96. Ces précisions contribuent à garantir que le code conserve un comportement sûr d'une version à l'autre du langage.

En mai 2026, Greg Kroah-Hartman, responsable de la maintenance du noyau stable de Linux, a affirmé 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 la sortie de Rust 1.98.0 :

Annonce de la version 1.98.0 de Rust

L'équipe Rust a le plaisir d'annoncer la sortie d'une nouvelle version de Rust, la 1.98.0. Rust est un langage de programmation qui permet à chacun de créer des logiciels fiables et performants. Si vous disposez déjà d'une version antérieure de Rust installée via rustup, vous pouvez passer à la version 1.98.0 en exécutant la commande suivante : $ rustup update stableNouveautés de la version stable 1.98.0

Les types en virgule flottante f32 et f64 disposent désormais de méthodes « algébriques » pour l’addition, la soustraction, la multiplication, la division et le reste. Celles-ci permettent d’optimiser ces opérations en tirant parti des propriétés algébriques des nombres réels, même si ces propriétés ne s’appliquent pas compte tenu des limites des représentations en virgule flottante. L'ensemble exact des optimisations n'est pas précisé, mais il pourrait s'apparenter au type d'optimisation que l'on observe avec l'option -ffast-math dans d'autres langages.

Par exemple, l'addition en virgule flottante n'est pas associative ; ainsi, une somme telle que a + b + c + d doit être évaluée selon l'ordre associatif de gauche dans lequel elle est analysée, c'est-à-dire ((a + b) + c) + d. Si vous écrivez la même somme sous la forme d’une chaîne d’appels à algebraic_add , le compilateur est alors libre de la réorganiser, par exemple en (a + b) + (c + d), afin d’évaluer les sommes partielles simultanément. L’utilisation de ces méthodes algébriques permet également souvent une vectorisation plus étendue des boucles. Ces méthodes sont non déterministes, puisque le compilateur est libre de choisir différentes optimisations, mais elles n’entraînent jamais de comportement indéfini.

Tous les types entiers primitifs disposent désormais d’une méthode format_into qui prend un paramètre de type &mut NumBuffer<Self>, c’est-à-dire un tampon suffisamment grand pour contenir le format décimal de n’importe quelle valeur de ce type. Le tampon lui-même est opaque, mais la méthode renvoie le &str formaté dont la durée de vie est empruntée à ce tampon. Cette méthode contourne également une grande partie du dispatch dynamique que l'on obtiendrait avec le formatage « buffered write! », ce qui peut être un véritable atout en termes de performances. Le dépôt itoa-benchmark montre désormais que format_into offre des performances similaires à celles de itoa lui-même ; cette méthode pourrait donc servir de remplacement standard à cette dépendance et à d'autres similaires.

Avant la version 1.96.0 de Rust, un bug dans le compilateur Rust provoquait un comportement indéfini dans le code suivant :

1
2
3

let mut x = ManuallyDrop::new(Box::new(1));
unsafe { ManuallyDrop::drop(&mut x) };
let x = x; // UB!

En effet, le compilateur considère comme un comportement indéfini (UB) le déplacement d’une Box qui a été libérée (déallouée), et la fonction ManuallyDrop propageait auparavant ce comportement, de sorte que le déplacement d’un objet de type ManuallyDrop<Box<_>> dont la Box avait été libérée était également considéré comme UB. Dans Rust 1.96.0, nous avons corrigé ce problème, de sorte que ce code n'était plus considéré comme un comportement indéfini. Dans cette version, nous avons mis à jour la documentation de ManuallyDrop, offrant ainsi la garantie que ce code continuera à ne pas être considéré comme un comportement indéfini à l'avenir.

Source : Rust

Et vous ?

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

Voir aussi :

Rust contribuera au succès de Linux et rendra la programmation plus ludique, car Rust est essentiel pour améliorer à la fois la sécurité et la maintenabilité du code du noyau Linux, affirme Greg Kroah-Hartman

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

Les développeurs principaux de CPython proposent d'intégrer Rust afin d'améliorer la sécurité mémoire et de réduire les vulnérabilités dans le code source C de Python, ce qui suscite des débats

Vous avez lu gratuitement 67 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.