Go 1.26: tudo que mudou na nova versão
E aí, pessoal!
Go 1.26 chegou em fevereiro de 2026, seis meses depois do Go 1.25. E veio com mudanças que vão impactar diretamente a performance e a forma como você escreve código Go.
O destaque principal é o novo Green Tea garbage collector, agora ativado por padrão. Mas tem muito mais coisa interessante nessa versão.
Vamos ver o que mudou de verdade.
O que você vai encontrar aqui
Esta versão traz mudanças em quatro áreas principais:
- Mudanças na linguagem:
newmais poderoso, generics mais flexíveis - Novo garbage collector: Green Tea GC por padrão
- Ferramentas modernizadas:
go fixcompletamente reescrito - Melhorias nas bibliotecas: diversas melhorias no stdlib
Cada seção tem o que mudou e o impacto prático para o seu dia a dia.
1. Mudanças na linguagem
new aceita expressões como operando
A função built-in new agora permite que seu operando seja uma expressão, especificando o valor inicial da variável.
Isso é especialmente útil ao trabalhar com pacotes de serialização como encoding/json ou protocol buffers, que usam ponteiros para representar valores opcionais:
1
2
3
4
5
6
7
8
9
10
11
type Person struct {
Name string `json:"name"`
Age *int `json:"age"` // idade se conhecida; nil caso contrário
}
func personJSON(name string, born time.Time) ([]byte, error) {
return json.Marshal(Person{
Name: name,
Age: new(yearsSince(born)), // antes precisava de uma variável auxiliar
})
}
Antes, você precisava criar uma variável auxiliar:
1
2
3
// Antes do Go 1.26
age := yearsSince(born)
person := Person{Name: name, Age: &age}
Agora ficou muito mais limpo e direto.
Generics: tipos podem se referenciar na lista de parâmetros
A restrição de que um tipo genérico não podia se referenciar em sua própria lista de parâmetros de tipo foi removida.
Agora é possível especificar constraints de tipo que se referem ao próprio tipo genérico sendo restringido:
1
2
3
4
5
6
7
type Adder[A Adder[A]] interface {
Add(A) A
}
func algo[A Adder[A]](x, y A) A {
return x.Add(y)
}
Antes, a auto-referência a Adder na primeira linha não era permitida. Isso torna os type constraints mais poderosos e simplifica as regras da spec para parâmetros de tipo.
2. Novo garbage collector: Green Tea GC
O que é o Green Tea GC
O Green Tea garbage collector, disponível como experimento no Go 1.25, agora está ativado por padrão no Go 1.26.
Este novo GC melhora a performance de marcação e varredura de objetos pequenos através de melhor localidade de memória e escalabilidade de CPU.
Impacto na performance
Os resultados dos benchmarks variam, mas a expectativa é:
1
2
3
4
5
6
7
┌─────────────────────────────────────────┐
│ Redução no overhead do GC │
│ │
│ Geral: 10–40% menos overhead │
│ CPUs modernas: +10% adicional │
│ (Intel Ice Lake / AMD Zen 4 ou mais) │
└─────────────────────────────────────────┘
Em CPUs modernas (Intel Ice Lake ou AMD Zen 4 e mais recentes), o GC aproveita instruções vetoriais para varredura de objetos pequenos, adicionando ~10% a mais de melhoria.
Como desativar (se necessário)
Se você encontrar algum problema de performance ou comportamento, pode desativar:
1
GOEXPERIMENT=nogreenteagc go build .
Nota: Esta opção de desativação será removida no Go 1.27. Se você precisar desativar por alguma razão, reporte o problema em github.com/golang/go.
Outras melhorias no runtime
Chamadas cgo mais rápidas: O overhead base de chamadas cgo foi reduzido em ~30%.
Randomização do endereço base do heap: Em plataformas 64-bit, o runtime agora randomiza o endereço base do heap na inicialização. Isso é uma melhoria de segurança que dificulta para atacantes preverem endereços de memória ao usar cgo.
Goroutine leak profile (experimental): Um novo tipo de profile que reporta goroutines vazadas está disponível como experimento:
1
GOEXPERIMENT=goroutineleakprofile go build .
Uma goroutine “vazada” é aquela bloqueada em uma primitiva de concorrência (channels, sync.Mutex, sync.Cond, etc.) que não pode ser desbloqueada. O runtime detecta isso usando o garbage collector.
3. Ferramentas: go fix completamente reescrito
O novo go fix
O go fix foi completamente reformulado e agora é o lar dos modernizers do Go. Ele oferece uma forma confiável de atualizar bases de código Go para os idiomas e APIs mais recentes.
A suíte inicial de modernizers inclui:
- Dezenas de fixers para usar features modernas da linguagem e biblioteca
- Um inliner em nível de source que permite automatizar migrações de API usando diretivas
//go:fix inline
1
2
# Moderniza automaticamente seu código
go fix ./...
Importante: Esses fixers não devem mudar o comportamento do seu programa.
O novo go fix é construído sobre o mesmo framework de análise do go vet. Isso significa que os mesmos analyzers que fornecem diagnósticos no go vet podem ser usados para sugerir e aplicar fixes no go fix.
Outras mudanças nas ferramentas
go mod init com versão mais baixa por padrão: Agora cria go.mod com uma versão anterior para encorajar compatibilidade com versões suportadas:
1
2
Go 1.26 → cria go.mod com go 1.25.0
Go 1.26 RC → cria go.mod com go 1.24.0
cmd/doc removido: O comando go tool doc foi removido. Use go doc como substituto direto (mesmos flags e comportamento).
pprof com flame graph por padrão: A interface web do pprof agora mostra o flame graph por padrão ao usar -http. O view anterior ainda está disponível em “View → Graph”.
4. Melhorias nas bibliotecas
log/slog: MultiHandler
Nova função NewMultiHandler que cria um handler que invoca múltiplos handlers:
1
2
3
4
5
handler := slog.NewMultiHandler(
slog.NewJSONHandler(os.Stdout, nil),
slog.NewTextHandler(logFile, nil),
)
logger := slog.New(handler)
io: ReadAll mais eficiente
io.ReadAll agora aloca menos memória intermediária e retorna um slice de tamanho mínimo:
- ~2x mais rápido
- ~50% menos memória alocada
- Mais benefício para inputs maiores
reflect: iteradores para tipos e valores
Novos métodos que retornam iteradores:
1
2
3
4
// Iterar sobre campos de um struct
for field, value := range reflect.ValueOf(myStruct).Fields() {
fmt.Println(field.Name, value)
}
Novos métodos: Type.Fields, Type.Methods, Type.Ins, Type.Outs, Value.Fields, Value.Methods.
net/http: melhorias HTTP/2
- Novo campo
HTTP2Config.StrictMaxConcurrentRequestspara controlar abertura de novas conexões quando o limite de streams HTTP/2 é atingido Clientagora usa cookies com escopo correto para URLs comRequest.Host
testing: diretório de artefatos
Novos métodos T.ArtifactDir, B.ArtifactDir e F.ArtifactDir para escrever arquivos de output de testes:
1
go test -artifacts ./...
image/jpeg: encoder e decoder mais rápidos
O encoder e decoder JPEG foram substituídos por implementações novas, mais rápidas e precisas.
Atenção: Código que espera output bit-a-bit específico pode precisar ser atualizado.
5. Mudanças de plataforma
macOS
Go 1.26 é a última versão que rodará no macOS 12 Monterey. Go 1.27 exigirá macOS 13 Ventura ou mais recente.
Resumo:
| Área | Mudança | Impacto |
|---|---|---|
| GC | Green Tea GC por padrão | 10–40% menos overhead |
| Linguagem | new com expressões | Código mais limpo |
| Linguagem | Generics auto-referência | Constraints mais poderosos |
| Ferramentas | go fix reescrito | Modernização automática de código |
| Runtime | cgo ~30% mais rápido | Melhor integração com C |
| io | ReadAll 2x mais rápido | Menos alocações |
| macOS | Última versão com macOS 12 | Atualize para macOS 13+ |
Como atualizar
1
2
3
4
5
6
# Baixe Go 1.26
go install golang.org/dl/go1.26@latest
go1.26 download
# Ou via site oficial
# https://go.dev/dl/
Depois de atualizar, rode o novo go fix para modernizar seu código:
1
go fix ./...
Conclusão
Go 1.26 é uma versão sólida. O Green Tea GC por padrão é a mudança mais impactante — você vai notar a diferença em aplicações que fazem uso intenso de memória.
As mudanças na linguagem são pequenas mas úteis. O go fix reescrito é uma aposta no longo prazo para manter bases de código Go modernas.
Vale atualizar. E como sempre, a promise de compatibilidade do Go 1 garante que seu código existente vai continuar funcionando.
Referências e fontes
- Go 1.26 Release Notes - Notas oficiais da versão
- Go Downloads - Download oficial do Go 1.26
- Green Tea GC - Issue de acompanhamento do Green Tea GC
- go fix modernizers - Blog posts sobre os novos modernizers
