BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Actualités Go 1.9 introduit les alias de type et améliore le moteur d'exécution et l'outillage

Go 1.9 introduit les alias de type et améliore le moteur d'exécution et l'outillage

Dans la version 1.9 récemment publiée de Go, le plus grand changement est l'amélioration du support pour la réparation incrémentale du code via l'utilisation des déclarations des alias de type. Go 1.9 améliore également le ramasse-miettes et le compilateur.

La réparation incrémentale du code, expliquée par l'ingénieur Google Russ Cox, est une approche utile pour le refactoring de code, surtout pour d'importantes bases de code. En bref, l'amélioration progressive du code vise à diviser un refactoring important en une série d'étapes, c'est-à-dire des commits, par rapport à apporter tous les changements de manière atomique, c'est-à-dire en un commit unique. L'approche du refactoring atomique est généralement plus simple au niveau conceptuel, mais avec de larges bases de code, elle peut provoquer des commits, difficiles à réviser et à fusionner. Avec la réparation incrémentale du code, vous refactorez votre code en trois étapes : d'abord, vous introduisez la nouvelle API, qui devrait pouvoir coexister avec l'ancienne API, de sorte qu'il ne soit pas nécessaire de modifier toutes les utilisations de l'ancienne API à la fois. Deuxièmement, vous convertissez toutes les utilisations de l'ancienne API dans la nouvelle API. Enfin, vous pouvez supprimer l'ancienne API.

Pour permettre une réparation incrémentale du code, il est possible de créer des noms alternatifs pour les constantes, les fonctions, les variables et les types. Maintenant, Go permet de définir un alias de type en utilisant une déclaration comme :

type OldAPI = NewPackage.API

Cela peut être utilisé pour que toutes les références à OldAPI utilisent automatiquement le type refactoré. Pour une discussion plus large sur la réparation incrémentale du code, ne manquez pas l'exposé de Russ Cox.

Comme l'explique l'ingénieur Google Francesc Campoy, la plupart des efforts d'ingénierie pour Go 1.9 ont permis d'améliorer le moteur d'exécution, la bibliothèque principale et l'outillage. Les changements les plus significatifs sont les suivants:

  • Go collector fournit maintenant de meilleures performances grâce à un certain nombre de fonctions de la bibliothèque déclenchant le ramasse-miettes concurrent, qui bloque uniquement le goroutine appelante et non le programme dans son entier. De plus, l'allocation d'objets volumineux sur le tas a été considérablement améliorée.
  • Le compilateur Go 1.9 peut maintenant compiler des fonctions appartenant au même package en parallèle. Cela s'ajoute à la compilation parallèle de paquets distincts, qui était déjà disponible dans les versions précédentes du compilateur.
  • Sur le front de la bibliothèque de base, Go 1.9 rend l'utilisation du paquet time sécurisée grâce au suivi monotone de temps. Cela facilite la comparaison avec les valeurs de Time même en présence d'ajustements de l'horloge. En outre, le nouveau type Map appartenant au package sync fournit un dictionnaire accessible par des accès concurrents, avec un chargement, un stockage et une suppression en temps constant.

Pour en savoir plus sur tous les changements disponibles dans Go 1.9, assurez-vous de lire les notes de version officielles.

Evaluer cet article

Pertinence
Style

Contenu Éducatif

BT