🇬🇧 English version available here
Go avancé
Au cœur du runtime : architecture, concurrence et optimisations
Go avancé décrit les mécanismes internes du langage Go : le fonctionnement du
runtime, la gestion de la mémoire, les structures de données et la concurrence.
L'ouvrage s'appuie sur les sources officielles et sur le code du dépôt golang/go,
et il couvre Go 1.26 et les versions ultérieures.
Thierry Fournier, Éditions D-BookeR, 2026. 612 pages, 27 chapitres répartis en
4 parties, 20 démonstrations et benchmarks reproductibles. Version de Go couverte : 1.26.
ISBN de la version PDF : 978-2-8227-1187-6. Mise en vente le 22 septembre 2026.
Fiche et commande sur le site des Éditions D-BookeR
Les versions papier ainsi que les fiches Fnac et Amazon seront disponibles à la mise en
vente, le 22 septembre 2026.
À qui s'adresse ce livre
Le lecteur sait écrire du Go. Il connaît les goroutines et les channels, il utilise
peut-être le langage en production, et il se pose des questions plus profondes :
comment le scheduler choisit la goroutine à exécuter, pourquoi certaines variables
échappent à la stack, comment les maps gèrent les collisions.
L'objectif n'est pas de faire du lecteur un développeur du compilateur, mais de lui donner
de quoi prendre des décisions d'architecture éclairées selon ses contraintes de mémoire,
de latence et de charge.
Prérequis : une pratique régulière de Go. Des notions de systèmes et
d'assembleur aident à la lecture mais ne sont pas nécessaires.
Ce que ce livre n'est pas
- un tutoriel d'introduction à Go ;
- une référence exhaustive du langage ;
- un catalogue de solutions clés en main ;
- un guide de bonnes pratiques générales.
À notre connaissance, il n'existe pas d'ouvrage francophone couvrant le runtime de Go à
cette profondeur.
Points traités
Éléments abordés dans l'ouvrage et rarement documentés en français :
- modèle G-M-P et fonctionnement interne du scheduler, work stealing, hand-off sur syscall bloquant ;
- allocateur par classes de taille, spans, arenas, hiérarchie mcache / mcentral / mheap ;
- garbage collector tri-color concurrent, et l'algorithme Green Tea introduit en Go 1.26 ;
- escape analysis, croissance et réduction dynamique des stacks ;
- GCShape stenciling des types paramétrés ;
- network poller (epoll, kqueue), sysmon, préemption par signal ;
- modèle mémoire et relations happens-before ;
- package unsafe et réflexion.
Sommaire
Partie 1 : Fondements du runtime
- Architecture et modèle de concurrence
- Bootstrap du runtime et initialisation
- Modèle mémoire de Go
- Allocation et gestion de la mémoire
- Garbage collector et récupération mémoire
- Observabilité et optimisation mémoire
- Architecture et ordonnancement
- Composants du runtime et monitoring
Partie 2 : Types et structures de données
- Fondements des structures de données
- Slices et arrays, représentation interne
- Strings, représentation interne et immutabilité
- Maps, hash tables internes
- Interfaces et système de types
- Types paramétrés, polymorphisme à la compilation
Partie 3 : Mécanismes avancés du langage
- Switch et sélection de cas
- Fonctions anonymes et closures
- Defer, garanties d'exécution
- Panic et recover
- Itérateurs par fonction
- Package unsafe
- Réflexion, introspection et manipulation dynamique
- Compilation et optimisations
Partie 4 : Concurrence maîtrisée
- Goroutines, mécanismes internes
- Primitives de synchronisation
- Fonctions avancées de synchronisation
- Channels, communication et signaling
- Outils pour la programmation concurrente
Annexes
- 20 démonstrations techniques et benchmarks reproductibles ;
- 4 annexes algorithmiques : tas binaires, sondage quadratique, optimisation de la division par constante ;
- glossaire et index.
Méthode
Les explications s'appuient sur les sources officielles (go.dev, code source du dépôt
golang/go). Les démonstrations et les benchmarks sont mesurés sur deux
architectures : Intel Core i7 et Apple M4 Pro.
Éditeur
Éditions D-BookeR, 229 rue Solférino, 59000 Lille.
Édition 1, version 1.0, 2026. ISBN de la version PDF : 978-2-8227-1187-6.
Fiche éditeur et commande