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

  1. 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

  1. 02 - O scheduler GMP a fundo — run queues, work stealing, syscalls, preempção assíncrona (1.14)
  2. 03 - A stack de uma goroutine — stacks pequenas e contíguas, stack copying, por que milhões cabem
  3. 04 - Escape analysis — stack vs heap, -gcflags="-m", o que faz um valor escapar
  4. 05 - O garbage collector — tri-color concurrent mark-sweep, write barrier, STW curtíssimo

Magus — controle e otimização

  1. 06 - Tuning do GCGOGC, GOMEMLIMIT (1.19), pacing, GODEBUG=gctrace
  2. 07 - O memory model — happens-before, o que channels/mutex/atomic garantem sobre visibilidade
  3. 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