Rust 1.80 est sorti : aperçu des changements clés et des nouveautés
L'équipe de développement de Rust a présenté une nouvelle version stable — la version 1.80.0. Cette mise à jour apporte plusieurs fonctionnalités attendues depuis longtemps, stabilise un certain nombre d'API et améliore l'expérience utilisateur. Voyons ce qui a changé et comment ces innovations affecteront le développement.
Stabilisation de LazyCell et LazyLock
Sans doute la nouveauté la plus notable — la stabilisation des types LazyCell et LazyLock. Auparavant, pour l'initialisation paresseuse des données, il fallait utiliser des crates tiers (par exemple, once_cell) ou des constructions complexes.
- LazyCell — initialisation paresseuse non bloquante pour un contexte monothread. Permet de différer la création d'une valeur jusqu'à la première utilisation.
- LazyLock — version thread-safe, utilisant un mutex pour synchroniser l'accès. Idéal pour les configurations globales et les singletons.
Les deux types implémentent les traits Deref et DerefMut, ce qui les rend pratiques à utiliser. Désormais, la bibliothèque standard couvre les scénarios les plus courants d'initialisation paresseuse.
Stabilisation d'API : Exclusive et autres
Dans la version 1.80, un certain nombre de nouvelles API ont été stabilisées :
Exclusive— une enveloppe pour l'accès exclusif à une valeur. Permet de travailler en toute sécurité avec des types non-Send dans un contexte asynchrone, en fournissant un accès synchrone via une fermeture.- Les méthodes
BorrowedBuf::as_sliceetBorrowedCursor::as_slice— simplifient le travail avec les tampons d'entrée-sortie. HashMap::extract_ifetHashSet::extract_if— des itérateurs permettant de supprimer des éléments d'une collection selon un prédicat, en prenant leur propriété.
Améliorations du compilateur
L'équipe Rust continue de travailler sur le retour d'information du compilateur. Dans la version 1.80, les messages d'erreur en cas d'utilisation incorrecte des traits et des durées de vie ont été améliorés. Désormais, le compilateur propose des suggestions plus précises, ce qui est particulièrement utile pour les débutants.
- Diagnostics améliorés pour les erreurs liées aux types implémentant
Drop. - Messages plus clairs en cas de conflits d'imports.
- Optimisation du temps de compilation pour les projets utilisant des macros.
Qu'est-ce que cela signifie pour les développeurs ?
La mise à jour vers Rust 1.80 est recommandée à tous ceux qui utilisent activement l'initialisation paresseuse ou travaillent avec du code asynchrone. La stabilisation de LazyLock permet de se passer de dépendances externes, simplifiant la construction et améliorant la sécurité. Les nouvelles méthodes pour les collections rendent le code plus idiomatique, et le diagnostic amélioré du compilateur accélère le débogage.
Pour les utilisateurs de PythonLib qui étudient Rust ou l'utilisent en combinaison avec Python (par exemple, via PyO3), cette mise à jour est également importante : les API stables et les performances améliorées du compilateur rendent Rust encore plus attractif pour la programmation système et les services à forte charge.
La liste complète des modifications est disponible dans les notes de version officielles. Vous pouvez mettre à jour Rust avec la commande rustup update stable.