Verificando um aumento de versão do Go
Elevar a linha go no go.mod altera mais do que apenas a versão da linguagem. Cada pacote principal recebe os padrões GODEBUG da nova versão, então o comportamento em net/http, crypto/tls, crypto/x509, net/url, runtime e outros pode mudar sem nenhuma alteração no código. A ferramenta integrada pergunta à toolchain Go instalada quais padrões mudam e quais binários importam os pacotes afetados. Ela precisa do Go instalado, lê o go.mod sem editá-lo, nunca compila ou executa o código do usuário e nunca usa a rede.
Executar a ferramenta
A partir da raiz do módulo, ou passando seu diretório:
go run "${CLAUDE_PLUGIN_ROOT}/scripts/godebugdiff.go" --to 1.24 .
--toassume como padrão a versão da toolchain instalada e não pode ser mais recente que ela. Se o usuário quiser um destino mais novo, diga que ele precisa instalar essa versão do Go primeiro.--fromassume como padrão a linha go atual. Para revisar um PR que já a elevou, passe a versão da branch base:--from 1.21.- Adicione
--jsonpara saída estruturada e--testspara incluir binários de teste. Um módulo sem pacote principal é verificado automaticamente por meio de seus binários de teste. - Se aparecer que os módulos não estão no cache de módulos, pergunte antes de executar
go mod download, pois isso usa a rede.
Verificar cada alteração que atinge um binário
A ferramenta lista as configurações pelo pacote que as lê. Importar um pacote não significa que o caminho de código alterado é usado, então verifique:
- Leia a frase de documentação e o link da configuração. Em seguida, procure no código a API que ela nomeia, como
http.NewServeMuxe padrõesHandleFuncparahttpmuxgo121,tls.Configpara configurações de TLS,x509.ParseCertificateouCreateCertificatepara configurações de x509 erand.Seedpararandseednop. - Diga para cada configuração se o código usa aquele caminho: usado, não usado ou não é possível determinar (por exemplo, uma dependência o chama).
- Configurações de
runtime, comocontainermaxprocseupdatemaxprocs, aplicam-se a todos os binários. Aponte aquelas que são importantes para como o projeto é implantado, como contêineres com limites de CPU. - Configurações iniciadas com
winsó importam no Windows. Diga isso se o projeto não for distribuído para lá. - Configurações em "Altera o comando go" afetam
go test -jsonou compilações em CI, não o programa.
Relatório
- Uma tabela curta: configuração, o que muda, quais binários e se o código usa aquele caminho.
- Recomende aceitar o novo padrão ou fixar o antigo. Sugira fixar apenas para configurações das quais o código realmente depende e use o bloco
godebug ( ... )da ferramenta. As fixações são temporárias: diga que são removidas em versões futuras do Go. - Repasse as observações da ferramenta, como a alteração da variável de loop no Go 1.22 ou que a linha go de uma biblioteca não define GODEBUG para os programas que a importam.
Não fazer
- Não edite o go.mod a menos que o usuário peça.
- Não diga que um aumento é seguro porque nada está listado. A ferramenta cobre apenas os padrões GODEBUG. As notas de versão listam outras alterações.
- Não execute os testes ou binários do usuário para verificar o comportamento, a menos que ele peça.