Lendo Notas de Lançamento Como um Tech Lead
Notas de lançamento são o registro de risco de atualização para o Go.
Busque em todas as páginas da documentação
Notas de lançamento são o registro de risco de atualização para o Go.
Esta cheatsheet transforma um documento de 30 páginas do Go 1.x em decisões que sua equipe pode agendar, testar e reverter.
go.dev/doc/go1.N| Seção | O que extrair | Ação do SME |
|---|---|---|
| Introdução | Plataformas suportadas removidas | Atualize imagens base e runners de CI |
| Linguagem | Nova sintaxe, regras mais rígidas | Planeje o aumento da diretiva go |
Ferramentas (go command) | Alterações em go fix, go mod, vet | Atualize scripts de CI |
| Runtime / GC | Coletor, scheduler, experimentos | Faça canary de p99 e CPU do GC |
| Compilador / Linker | Alocação de pilha, layout de seção | Reteste de cgo/ferramentas de análise estática |
| Biblioteca padrão | Comportamento que quebra compatibilidade, deprecações | Procure no codebase por pacotes afetados |
| Ports | Remoção de SO/arquitetura | Remova alvos de build EOL |
go (por exemplo, new(expr) em 1.26).//go:build go1.N para arquivos que ainda não estão prontos para serem atualizados em todo o módulo.libs/* compartilhadas permanecerão uma versão menor atrás das services/*.go fix se aplicam (go tool fix help).nogreenteagc; observe o cronograma de remoção (1.27).CGO_ENABLED=1.GOEXPERIMENT=goroutineleakprofile opcional para experimentos em staging./sched/* para dashboards.go padrão para N-1; alinhe explicitamente com a política da organização.go tool doc removido em 1.26; corrija docs e scripts.| Item | Exemplo 1.26 | Teste |
|---|---|---|
| Padrões TLS | KEX híbrido PQ ativado por padrão | Suite de handshake de cliente legado |
| crypto/rand | Ignora leitores rand personalizados | Testes determinísticos usam cryptotest |
| url.Parse | Regras de dois pontos mais rígidas no host | URLs de configuração com hosts incomuns |
| ReverseProxy | Director depreciado em favor de Rewrite | Audite o código do gateway |
| Redirecionamentos de mux http | 307 em vez de 301 para barra final | Caminhos sensíveis a cache e SEO |
# Pacotes que você usa que aparecem nas notas de lançamento - exemplo de grep
rg -l 'net/http/httputil|crypto/tls|encoding/json' --glob '*.go'
# Símbolos depreciados mencionados nas notas
rg 'ReverseProxy\.Director|interface\{\}' --glob '*.go'
# GODEBUG no repositório
rg 'GODEBUG' --glob '*.{go,sh,yml,env*}'| Portão | Critérios de aprovação | Responsável |
|---|---|---|
| G0 Leitura | Rascunho do ADR com seções marcadas | Tech lead |
| G1 Build | go test -race ./... em todos os módulos | Equipes de serviço |
| G2 Modernização | go fix commitado, go vet limpo | Plataforma |
| G3 Staging | 24h de observação, GC e p99 dentro do orçamento | SRE |
| G4 Canary | 5-10% do tráfego, orçamento de erro verde | SRE + lead |
| G5 Promoção | Remover substituições temporárias de GOEXPERIMENT | Tech lead |
| Chave GODEBUG | Padrão em 1.26 | Alvo de remoção | Usamos? |
|---|---|---|---|
tls10server | off (mínimo TLS 1.2) | Go 1.27 | |
urlstrictcolons | on | rollback com =0 | |
gotypesalias | Alias de tipos sempre | Go 1.27 | |
cryptocustomrand | off | restauração temporária com =1 |
# Reverter tag da imagem
kubectl set image deploy/api api=api:go1.25.6
# Rollback apenas de GC (mesmo binário Go 1.26)
GOEXPERIMENT=nogreenteagc ./api
# Rollback de linguagem (requer reconstrução)
# go.mod: go 1.25.0 && go mod tidy && reconstruir60-90 minutos para uma versão menor se você for responsável por vários serviços.
Leia a introdução e as portas primeiro, depois leia profundamente runtime, crypto e os pacotes que você importa.
Leia as notas de patch para CVEs de segurança e correções críticas de runtime.
O checklist completo é geralmente apenas para versões menores, a menos que o patch mencione seus pacotes.
Ainda leia as seções de runtime/GC e crypto/TLS.
Serviços com CGO_ENABLED=0 continuam afetados pelo GC e pelos padrões de crypto/tls.
Plataforma ou um campeão de atualização rotativo.
Divida por analisador em repositórios grandes para manter a carga de revisão gerenciável.
Notas de lançamento anunciam correções; govulncheck informa se caminhos de biblioteca padrão vulneráveis são alcançáveis em seus binários.
Execute ambos durante a semana de atualização.
Frequentemente sim para serviços com uso intensivo de CPU, após validação em canary.
É uma mudança de performance, não uma razão para pular testes funcionais.
Âncoras https://go.dev/doc/go1.N#section e números de issue das notas.
Evite linkar apenas posts de blog; as notas são canônicas.
Verifique itens interessantes das notas em relação ao status do go.dev/issue.
Propostas rejeitadas explicam recursos que não chegarão em breve.
Quando os patches de segurança são backportados e as mudanças de runtime não afetam seu perfil.
Documente a dívida aceita no ADR com data de revisão.
Não.
As notas dizem o que medir; canaries provam isso para suas cargas de trabalho.
Versões de Stack: Esta página foi escrita para Go 1.26.x (padrão Green Tea GC, modernizadores go fix - verifique o patch na compilação), chi (última versão - verifique na compilação), gin (última versão - verifique na compilação), echo (última versão - verifique na compilação), google.golang.org/grpc (última versão - verifique na compilação), sigs.k8s.io/controller-runtime (última versão - verifique na compilação), kubebuilder (última versão - verifique na compilação), tinygo (última versão - verifique os alvos de placa na compilação), wazero (última versão - verifique na compilação) e golangci-lint (última versão - verifique o conjunto de linters na compilação).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026