Lazy Loading e Graph Pruning
Lazy Module Loading e Graph Pruning introduzidos no Go 1.17 para melhorar performance
Introdução
O Problema: Go ≤ 1.16
Comportamento antigo
Seu módulo (go 1.16)
├── Dependência A v1.0
│ ├── Dependência B v1.0
│ │ ├── Dependência C v1.0
│ │ └── Dependência D v1.0 ← Nunca usado por você
│ └── Dependência E v1.0 ← Nunca usado por você
└── Dependência F v1.0
└── Dependência G v1.0 ← Nunca usado por vocêExemplo concreto
A Solução: Go 1.17+
Module Graph Pruning (Poda do Grafo)
Lazy Module Loading
Como funciona na prática
Estrutura do go.mod em Go 1.17+
Blocos de require separados
Comparação: Go 1.16 vs Go 1.17+
Grafo de módulos
Aspecto
Go 1.16
Go 1.17+
Exemplo de desempenho
Impacto no go.sum
Go 1.16: go.sum "inchado"
Go 1.17+: go.sum otimizado
Quando o Lazy Loading é ativado?
Minimal Version Selection (MVS) e Lazy Loading
Comandos afetados
Atualizando de Go 1.16 para 1.17+
Passo 1: Atualizar a diretiva go
Passo 2: Executar go mod tidy
Resultado
Verificando se Lazy Loading está ativo
Comportamento com workspaces
Troubleshooting
Problema: go mod tidy está lento
Problema: go.sum muito grande
Problema: Builds lentos
Melhores práticas
✅ Recomendado
❌ Evite
Impacto em CI/CD
Antes (Go 1.16)
Depois (Go 1.17+)
Estatísticas
Projeto
Deps Go 1.16
Deps Go 1.17+
Redução
Recursos adicionais
Conclusão
Last updated