L’itération 1.78 de Rust qui vient récemment d’être publiée comprend son lot d’évolutions. Parmi elles, on notera l’ajout d’un support d’un namespace pour des attributs #diagnostic pour influencer les messages du compilateur. Ceux-ci sont traités comme des indices que le compilateur n’est pas tenu d’utiliser, explique l’équipe de Rust. De plus, fournir un diagnostic que le compilateur ne reconnaît pas ne constitue pas une erreur. Cette fonctionnalité est conçue pour permettre au code source de fournir des diagnostics même s'ils ne sont pas pris en charge par tous les compilateurs.

Une autre fonctionnalité de Rust 1.78 concerne la validation de préconditions non sûres. La bibliothèque standard Rust en possède un certains nombres, mais historiquement, elles n'ont été activées que dans les versions #[cfg(debug_assertions)] de la bibliothèque pour éviter d'affecter les performances de la version. Comme la bibliothèque est généralement compilée et distribuée en mode release, la plupart des développeurs Rust n'exécutaient pas ces vérifications. Avec Rust 1.78, la condition pour ces validations est retardée jusqu'à la génération du code, de sorte qu'elles seront vérifiées en fonction de la configuration de l'utilisateur pour les assertions de débogage, activées par défaut dans les versions de débogage et de test. Ce changement permettra d'identifier les comportements non définis dans le code. Cependant, les détails concernant la quantité d'assertions vérifiées ne sont pas stables.

Un alignement des pointeurs et des slices

Le réalignement déterministe est également présent dans Rust 1.78. La bibliothèque possède des fonctions qui modifient l'alignement des pointeurs et des slices, mais elles avaient auparavant des réserves qui les rendaient difficilement utilisables dans la pratique. Ces caveats existaient principalement comme une couverture contre l'évaluation const, mais ils n'étaient stables que pour une utilisation non-const. Maintenant, ils sont promis d'avoir un comportement cohérent lors de l'exécution en fonction des entrées réelles.

Rust 1.78 stabilise également un certain nombre d'API, augmente son exigence minimale à Windows 10 pour des cibles telles que x_86-pc-windows-msvc, et met à jour son LLVM intégré à LLVM 18. La dernière itération du langage fait suite à la version 1.77 du 21 mars, qui proposait le support des chaînes de caractères en C. Deux versions ponctuelles ont également été publiées, Rust 1.77.1, qui a désactivé le nouveau comportement de Cargo sur Windows pour les cibles utilisant MSVC (Microsoft C et C++), et Rust 1.77.2, qui a corrigé une vulnérabilité.