Go — Runtime interno
TL;DR
Galho 17 da trilha Go — o que roda por baixo do seu binário. É o par do “CPython internals”: um diferencial sênior que cai em entrevista. 8 notas em 3 fases: o runtime não é uma VM (Iniciado); scheduler GMP a fundo, stacks que crescem, escape analysis e o garbage collector (Adepto); tuning de GC, memory model e otimização guiada por entendimento (Magus). Ao fim, você raciocina sobre custo e desempenho a partir de como Go de fato funciona.
Aqui o galho 7 (visão de topo do scheduler) vira detalhe: work stealing, write barriers, stacks contíguas e a decisão stack-vs-heap. Ver roadmap pro estado das notas.
Notas por fase
Iniciado — o que é o runtime
- 01 - O runtime Go por baixo — o que o runtime faz, por que não é VM/interpretador, código linkado no binário
Adepto — os mecanismos
- 02 - O scheduler GMP a fundo — run queues, work stealing, syscalls, preempção assíncrona (1.14)
- 03 - A stack de uma goroutine — stacks pequenas e contíguas, stack copying, por que milhões cabem
- 04 - Escape analysis — stack vs heap,
-gcflags="-m", o que faz um valor escapar - 05 - O garbage collector — tri-color concurrent mark-sweep, write barrier, STW curtíssimo
Magus — controle e otimização
- 06 - Tuning do GC —
GOGC,GOMEMLIMIT(1.19), pacing,GODEBUG=gctrace - 07 - O memory model — happens-before, o que channels/mutex/atomic garantem sobre visibilidade
- 08 - Otimização guiada por entendimento — reduzir alocações,
sync.Pool, quando micro-otimizar
Veja também
- Trilha Go — índice geral (21 galhos + capstone)
- Galho anterior: Observabilidade
- Próximo galho: Cloud-native e produção (galho 18) — do binário estático ao pod rodando no cluster