Annexe E : Les éditions
Au chapitre 1, vous avez vu que cargo new ajouté un peu de métadonnées à votre fichier Cargo.toml concernant une édition. Cette annexe explique ce que cela signifie !
Le langage Rust et son compilateur ont un cycle de publication de six semaines, ce qui signifie que les utilisateurs reçoivent un flux constant de nouvelles fonctionnalités. D’autres langages de programmation publient des changements plus importants moins souvent ; Rust publié des mises à jour plus petites plus fréquemment. Au bout d’un moment, tous ces petits changements s’accumulent. Mais d’une version à l’autre, il peut être difficile de prendre du recul et de dire : “Wow, entre Rust 1.10 et Rust 1.31, Rust a beaucoup changé !”
Environ tous les trois ans, l’équipe Rust produit une nouvelle édition de Rust. Chaque édition rassemble les fonctionnalités qui ont été intégrées dans un ensemble clair avec une documentation et des outils entièrement mis à jour. Les nouvelles éditions sont publiées dans le cadre du processus habituel de publication de six semaines.
Les éditions servent des objectifs différents selon les personnes :
- Pour les utilisateurs actifs de Rust, une nouvelle édition rassemble les changements incrémentaux dans un ensemble facile à comprendre.
- Pour les non-utilisateurs, une nouvelle édition signale que des avancées majeures ont été intégrées, ce qui pourrait justifier de reconsidérer Rust.
- Pour ceux qui développent Rust, une nouvelle édition fournit un point de ralliement pour le projet dans son ensemble.
Au moment de la rédaction de ce livre, quatre éditions de Rust sont disponibles : Rust 2015, Rust 2018, Rust 2021 et Rust 2024. Ce livre est écrit en utilisant les conventions de l’édition Rust 2024.
La clé edition dans Cargo.toml indique quelle édition le compilateur doit utiliser pour votre code. Si la clé n’existe pas, Rust utilise 2015 comme valeur d’édition pour des raisons de compatibilité ascendante.
Chaque projet peut opter pour une édition autre que l’édition 2015 par défaut. Les éditions peuvent contenir des changements incompatibles, comme l’ajout d’un nouveau mot-clé qui entre en conflit avec des identifiants dans le code. Cependant, à moins que vous n’optiez pour ces changements, votre code continuera à compiler même si vous mettez à jour la version du compilateur Rust que vous utilisez.
Toutes les versions du compilateur Rust prennent en charge toute édition qui existait avant la publication de ce compilateur, et elles peuvent lier ensemble des crates de n’importe quelles éditions prises en charge. Les changements d’édition n’affectent que la façon dont le compilateur analyse initialement le code. Par conséquent, si vous utilisez Rust 2015 et que l’une de vos dépendances utilise Rust 2018, votre projet compilera et pourra utiliser cette dépendance. La situation inverse, où votre projet utilise Rust 2018 et qu’une dépendance utilise Rust 2015, fonctionne également.
Pour être clair : la plupart des fonctionnalités seront disponibles sur toutes les éditions. Les développeurs utilisant n’importe quelle édition de Rust continueront à voir des améliorations au fil des nouvelles versions stables. Cependant, dans certains cas, principalement lorsque de nouveaux mots-clés sont ajoutés, certaines nouvelles fonctionnalités pourraient n’être disponibles que dans les éditions ultérieures. Vous devrez changer d’édition si vous souhaitez profiter de ces fonctionnalités.
For more details, see The Rust Edition Guide. This is a complete book that enumerates the differences between editions and explains how to automatically upgrade your code to a new edition via cargo fix.