2 points par GN⁺ 2023-08-15 | 1 commentaires | Partager sur WhatsApp
  • Un article sur l’importance de la rétrocompatibilité dans le langage de programmation Go, centré sur les nouvelles fonctionnalités de Go 1.21 et l’avenir de Go 2
  • Go 1.21 inclut de nouvelles fonctionnalités pour améliorer la compatibilité, avec pour objectif de garder Go stable et prévisible, afin que les développeurs puissent se concentrer sur leur travail plutôt que sur les changements du langage
  • L’équipe Go met l’accent sur la compatibilité depuis plus de 10 ans, avec l’intention claire que les programmes écrits conformément à la spécification Go 1 continuent à se compiler et à s’exécuter correctement sans modification pendant toute la durée de vie de cette spécification
  • Explication de deux approches principales pour maintenir la compatibilité : la vérification des API et les tests. La vérification des API garantit que les API existantes ne sont pas supprimées ni modifiées d’une manière qui casserait le code existant. Les tests consistent à exécuter les tests existants sur une version de développement de la prochaine release de Go
  • Exemples de problèmes de compatibilité subtils découverts en testant Go en interne chez Google, notamment autour des littéraux de structure et des nouveaux champs, ainsi que de la précision du temps
  • Les problèmes de compatibilité sont classés en trois catégories : modifications de sortie, modifications d’entrée et modifications de protocole
  • Go 1.21 améliore la rétrocompatibilité en étendant et en formalisant l’usage de GODEBUG. Les paramètres GODEBUG sont conservés pendant au moins deux ans et sont configurés pour correspondre à la version de Go indiquée dans le fichier go.mod du package principal
  • L’article se conclut par une mise à jour sur Go 2, en annonçant qu’il n’y aura pas de Go 2 qui casserait les programmes Go 1. À la place, l’équipe Go continuera à donner la priorité à la compatibilité, qu’elle considère comme la décision de conception la plus importante prise pour Go 1

1 commentaires

 
GN⁺ 2023-08-15
Avis sur Hacker News
  • Cet article aborde l’importance de la compatibilité dans Go 1.21 et l’éventualité d’un futur Go 2.
  • Go 1.21 propose deux fonctionnalités distinctives : des réglages GODEBUG pour chaque changement et des métriques pour détecter l’usage des implémentations précédentes, ainsi qu’une version de toolchain par module qui récupère automatiquement les anciennes et nouvelles toolchains Go.
  • Lorsqu’une version précise de Go est spécifiée, les nouvelles versions de Go appliquent automatiquement la configuration d’opt-out correspondante, afin que les nouveaux comportements ne soient pas activés tant qu’ils ne sont pas explicitement demandés.
  • L’équipe du langage Go reste déterminée à préserver la rétrocompatibilité, ce qui est apprécié par les développeurs qui maintiennent de grands systèmes en Go.
  • Certains utilisateurs expriment la crainte que des améliorations importantes du système de types puissent nécessiter des changements cassants.
  • Il est proposé que Go n’ait pas de véritable Go 2, car des changements majeurs pourraient exiger une bifurcation du langage et un changement de nom.
  • La stabilité et la prévisibilité de Go, décrites comme « ennuyeuses », contrastent avec l’écosystème JavaScript fragmenté et en perpétuelle évolution.
  • L’article mentionne aussi un billet connexe sur la « compatibilité ascendante et la gestion des toolchains dans Go 1.21 ».
  • L’engagement de Go envers la rétrocompatibilité est salué, et un utilisateur explique comment le passage de Python à Go a aidé son entreprise à se développer.
  • Les techniques utilisées par Go pour garantir la compatibilité sont admirées, et leur usage est envisagé dans la conception d’autres langages.