La version GO 1.15 est disponible depuis août 2020 - It-revue
523
post-template-default,single,single-post,postid-523,single-format-standard,bridge-core-3.0.1,qode-page-transition-enabled,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,hide_top_bar_on_mobile_header,qode-content-sidebar-responsive,qode-child-theme-ver-1.0.0,qode-theme-ver-28.5,qode-theme-bridge,disabled_footer_top,disabled_footer_bottom,qode_header_in_grid,wpb-js-composer js-comp-ver-6.7.0,vc_responsive
Version 1.15 langage Go de Google - It-revue

La version GO 1.15 est disponible depuis août 2020

16ème version majeure du langage de programmation développé par Google, le GO 1.15 est sortie au mois d’août 2020. Cette dernière version arrive à peine 6 mois après le Go 1.14, avec de nombreuses améliorations prévues.

 

Amélioration 1 : le linker

L’outillage dans Go 1.15 est marqué par une amélioration du linker. Cette réécriture intégrale intègre trois changements structurels majeurs, que sont :

  • L’amélioration des structures de données clés, en évitant les chaînes de caractères ;
  • Le déplacement du linker vers le compilateur,
  • Le chargement des fichiers objets d’entrée en mémoire un à un ;

Than McIntosh, un contributeur qui travaille sur le nouveau linker, de mentionner que les améliorations structurelles prévues dans le plan de conception ont été réalisées. Il remarque d’ailleurs que les constructions se font plus rapides et sont moins lourdes qu’en version 1.14.

Un autre contributeur principal au projet a ajouté plus de détails sur la partie « parallélisation » ainsi que sur la mise en place progressive du projet.

 

Amélioration 2 : la taille des binaires réduite jusqu’à 22%

Les améliorations au projet concernent la réduction de la taille des exécutables construits via la nouvelle version. C’est ainsi que son nouveau linker réduit de beaucoup les codes inutilisés. En comparaison, un programme test sur Go 1.14, d’une taille de 8.2 Mo, passe à 3.9Mo sur 1.15.

Quant aux programmes plus réalistes, leur taille binaire peut se voir réduite à 3.5 voire 22%.

Selon Ben Hoyt, l’ingénieur du logiciel, cette baisse est entre autres favorisée par le nouveau linker, qui élimine le code non utilisé, ajouté par plusieurs améliorations ciblées.

 

Amélioration 3 : la performance

Bien que mineures, deux améliorations méritent d’être soulevées concernant le Go 1.15 :

  • CL 216401 : qui permet d’éviter de consacrer de la mémoire lors de la transformation des petits nombres entiers en valeur d’interface ;
  • CL 226367 : qui assure une utilisation optimale de registres x86 en termes de barrière d’écriture du GC. Cette fonctionnalité permet de maintenir l’intégrité des données, une fois le code utilisateur et le GC fonctionnant en simultanée.

 

Amélioration 4 : outillage et portage

La version 1.15 du Go intègre un nouveau séparateur « I », de la variable d’environnement GOMODCACHE. Il s’agit d’une prise en charge d’un proxy de repli, permettant au logiciel d’avoir recours à un hôte secondaire, dans le cas où le premier échoue lors du téléchargement du code source.

Rappelons que le « module » de Go ne fut disponible que dans la version 1.11, tandis que la prise en charge d’un proxy n’est observée que dans 1.13.

Pour ce qui est des changements dans les portages, la nouvelle version se défait du darwin/386 et du darwin/arm, prise en charge des binaires 32 bits sur macOS, iOS, iPadOS, watchOS et tvOS.

Par ailleurs, Go génère désormais des exécutables Windows ASLR, soit utilisant la randomisation de la disposition des espaces d’adresses par défaut. Notons que l’ASLR a recours à un code indépendant pour cette option, ce qui renforce la défense des utilisateurs, en rendant difficile la prédiction des adresses cible.

Lors de la liaison de binaires sur Android, la dernière version effectue une sélection implicite de l’éditeur de liens lld disponible. Pour cela, elle pioche dans les versions récentes du NDK. Cet éditeur permet d’éviter les bugs observés sur certains périphériques. C’est ainsi que l’équipe prévoit de l’établir comme étant l’éditeur de liens NDK par défaut, pour une prochaine version NDK.

Pour ce qui est de la bibliothèque standard du logiciel, son ingénieur peut se féliciter de sa grandeur et sa stabilité.

No Comments

Post A Comment