Plutôt que d'encourager les développeurs Rust à livrer leur commit Cargo.lock pour les paquets contenant des binaires, mais pas de bibliothèques, l'équipe Cargo de Rust recommande maintenant aux développeurs de faire ce qui est le mieux pour leur projet. Ce changement d'orientation de la part de l'équipe à l'origine du gestionnaire de paquets Rust s'explique par le fait que le langage est de plus en plus répandu. Un fichier Cargo.lock est destiné à décrire l'état d'un projet une fois que la build est construite. En recommandant aux gens de faire ce qui est le mieux pour le projet, l'équipe suggère toujours de partir du commit Cargo.lock pour prendre leur décision. La nouvelle commande cargo n'ignorera plus Cargo.lock pour les bibliothèques.
L'équipe Cargo encourage les tests réguliers avec les dernières dépendances. Dans un bulletin publié le 29 août, l'équipe de Rust a déclaré que les anciennes directives s’assuraient que les bibliothèques testaient leurs dernières dépendances, ce qui contribuait à maintenir un haut niveau de qualité dans l'écosystème de paquets de Rust en garantissant que les problèmes, en particulier la rétrocompatibilité, étaient rapidement résolus. L'équipe estime que ces pratiques ont contribué à promouvoir une « culture de la qualité » dans l'écosystème naissant.
Quelques inconvénients persistent
Mais il y a aussi quelques inconvénients. Par exemple, la suppression de l'historique des bases de code complique la recherche de la cause initiale d'un bogue par les personnes chargées la maintenance du code. De plus, les contributeurs risquent d'être désorientés par une intégration continue (CI) peu fiable quand une dépendance est supprimée ou qu'une nouvelle version comporte un bogue.
Depuis la rédaction de cette ligne directrice, Rust n’est plus un langage réservé à des early adopters, mais il est devenu un langage mainstream. L'expérience d'intégration des nouveaux développeurs Rust doit être gardée à l'esprit. L'adoption plus large signifie également qu'il n'est pas toujours pratique de supposer que tout le monde utilise la dernière version de Rust. De plus, du fait de l'élargissement de l’écosystème, l’intégration continue CI est plus facile à mettre en place et à maintenir. Des produits comme Dependabot et Renovate ont apporté d'autres options, outre la non prise en compte du Cargo.lock par le contrôle de version pour tester d’autres dépendances. L'équipe Cargo pense désormais qu'il est préférable de laisser le choix aux développeurs tout en leur donnant les informations nécessaires pour prendre une décision. Ces derniers peuvent donner leur avis sur cette politique sur GitHub, ou contacter l'équipe Cargo sur Zulip.