🚧 Attention, peinture fraîche !

Cette page a été traduite par une seule personne et n'a pas été relue et vérifiée par quelqu'un d'autre ! Les informations peuvent par exemple être erronées, être formulées maladroitement, ou contenir d'autres types de fautes.

Vous pouvez contribuer à l'amélioration de cette page sur sa Pull Request.

Annexe E - Les éditions

Au chapitre 1, vous avez constaté que cargo new ajoutait une petite métadonnée à propos d'une édition dans votre fichier Cargo.toml. Cette annexe vous explique ce que cela signifie !

Le langage Rust et son compilateur suivent un cycle de publication de six semaines, ce qui signifie que leurs utilisateurs suivent un flux constant de nouvelles fonctionnalités. Les autres langages de programmation publient moins souvent des changements mais qui sont plus gros ; Rust a fait le choix de publier des petits changements plus fréquemment. Au bout d'un certain moment, tous ces petits changements s'accumulent. Mais de mise à jour en mise à jour, il devient difficile de regarder en arrière et de dire : “Ouah, Rust a beaucoup changé entre Rust 1.10 et Rust 1.31”.

Tous les deux ou trois ans, l'équipe Rust produit une nouvelle édition de Rust. Chaque édition rassemble des fonctionnalités qui ont convergé en un ensemble clair, avec une documentation et des outils complètement à jour. Les nouvelles éditions sont livrées comme faisant partie du cycle habituel de publication toutes les six semaines.

Les éditions apportent différentes choses pour différentes personnes :

  • Pour les utilisateurs actifs de Rust, une nouvelle édition regroupe les différents changements progressifs dans un ensemble clair.
  • Pour ceux qui n'utilisent pas Rust, une nouvelle édition signale la livraison d'avancées majeures, qui pourrait être le signal que Rust mériterait un nouveau coup d'œil.
  • Pour ceux qui développent Rust, une nouvelle édition est un point de ralliement pour l'ensemble du projet.

Au moment de cette écriture, deux éditions de Rust sont disponibles : Rust 2015 et Rust 2018. Ce livre est écrit selon les termes de l'édition Rust 2018.

La clé edition dans Cargo.toml indique quelle édition le compilateur doit utiliser dans votre code. Si la clé n'existe pas, Rust utilise 2015 comme valeur de l'édition, pour des raisons de rétro-compatibilité.

Chaque projet peut opter pour une autre édition que l'édition 2015 par défaut. Les éditions peuvent impliquer des changements incompatibles, comme l'introduction d'un nouveau mot-clé qui rentre en conflit avec des identificateurs (noms de variables, de fonctions, ...) utilisés dans le code. Cependant, à moins que vous ne décidiez d'opter pour ces changements, votre code va continuer à se compiler même si vous augmentez la version du compilateur Rust que vous utilisez.

Toutes les versions du compilateur Rust supporte toutes les éditions qui ont existé avant la publication courante du compilateur, et ils peuvent lier ensemble les crates de n'importe quelle édition supportée. Les changements de chaque édition changent uniquement la façon dont le compilateur interprète initialement le code. Par conséquent, si vous utilisez Rust 2015 et qu'une de vos dépendances utilise Rust 2018, votre programme va se compiler et être capable d'utiliser cette dépendance. La situation inverse, dans laquelle votre projet utilise Rust 2018 et qu'une dépendance utilise Rust 2015, va aussi fonctionner.

En clair : la plupart des fonctionnalités seront disponibles sur toutes les versions. Les développeurs qui utilisent n'importe quelle édition de Rust vont continuer à constater des améliorations au fur et à mesure que des nouvelles éditions stables sont publiées. Cependant, dans certains cas, principalement lorsque des nouveaux mot-clés serons rajoutés, certaines nouvelles fonctionnalités ne seront disponibles que dans les nouvelles éditions. Vous aurez alors besoin de changer d'édition si vous souhaitez profiter des avantages de ces fonctionnalités.

Pour en savoir plus, le Edition Guide est un livre complet sur les éditions, qui énumère les différences entre les éditions et qui explique comment mettre à jour automatiquement votre code vers une nouvelle édition via cargo fix.