1.18-1.21: Workspace & Toolchain Era

Go 1.18-1.21 - Era do Workspace e Toolchain Management

Visão Geral

Go 1.18-1.21 trouxeram Generics (não relacionado a módulos) e features revolucionárias de desenvolvimento multi-módulo e gerenciamento de toolchains.

Timeline:

  • Go 1.18: Março 2022 (Generics + Workspaces)

  • Go 1.19: Agosto 2022

  • Go 1.20: Fevereiro 2023

  • Go 1.21: Agosto 2023 (Toolchain Management)


Go 1.18 (Março 2022)

🎯 Workspace Mode

Maior feature para módulos!

Trabalhe com múltiplos módulos simultaneamente sem replace hacks.

# Antes: Precisava de replace no go.mod
replace github.com/empresa/lib => ../lib

# Agora: Workspace!
go work init ./app ./lib

Arquivo go.work:

Benefícios:

  • ✅ Desenvolvimento local simplificado

  • ✅ Monorepos mais fáceis

  • ✅ Sem editar go.mod

  • ✅ Cada desenvolvedor tem seu workspace local

Ver capítulo completo: Workspace Mode

🔨 Comandos de Workspace

🧬 Generics (Não é de módulos, mas revolucionário)

Outras melhorias

  • Fuzzing nativo

  • Performance de compilação melhorada

  • go mod init mais inteligente


Go 1.19 (Agosto 2022)

📝 go.mod doc comments

Agora go.mod suporta comentários de documentação:

🔧 Melhorias no Workspace

  • go work vendor (experimental)

  • Melhor integração com IDEs

  • Performance otimizada

🎯 GODEBUG para forward compatibility

Permite controlar comportamento entre versões:

Outras melhorias

  • Melhorias de segurança

  • Redução de alocações

  • Suporte a novas plataformas


Go 1.20 (Fevereiro 2023)

🗑️ GO111MODULE removido

🚀 PGO (Profile-Guided Optimization) Preview

Otimizações baseadas em profiling:

🔄 go.work vendor melhorado

Outras melhorias

  • Melhores mensagens de erro.

  • Performance de compilação.

  • Suporte melhorado a CGO.


Go 1.21 (Agosto 2023)

🎯 Gestão automática da Toolchain

FEATURE REVOLUCIONÁRIA!

Go agora baixa automaticamente a versão correta:

Variável GOTOOLCHAIN:

Ver capítulo completo: Toolchain Management

🔧 Diretiva toolchain

📦 Toolchains como módulos

Toolchains são tratados como módulos:

  • Caminho: golang.org/toolchain

  • Respeita GOPROXY

  • Cacheable

🔄 Min Version Selection para toolchains

MVS agora se aplica a toolchains também!

🎯 go.mod go Line é Obrigatória

Versões antigas (Go 1.19.13+, 1.20.8+) recusam carregar módulos com go line mais nova.

Outras melhorias

  • Melhorias no for loop (sem capture issues)

  • min() e max() built-ins

  • clear() built-in

  • Performance geral melhorada

  • PGO estável (não mais preview)


Comparação de features

Versão
Feature Principal
Impacto

1.18

Workspace Mode

🎯 Multi-module dev

1.19

Doc comments

📝 Melhor docs

1.20

GO111MODULE removido

🗑️ Limpeza

1.21

Toolchain Management

🚀 Auto-download


Workflow moderno (Go 1.21+)

Desenvolvimento Local

CI/CD


Migração para Go 1.21+

Preparação

Setup do Workspace


Checklist de atualização

Go 1.18

Go 1.19-1.20

Go 1.21


Recursos adicionais


Resumo

As versões 1.18-1.21 transformaram o workflow de desenvolvimento:

Feature
Problema Resolvido

Workspace

Desenvolvimento multi-módulo era difícil

Toolchain

Versões do Go eram confusas

PGO

Performance poderia ser melhor

Generics

Type safety sem interfaces vazias

circle-check

Last updated