11 pontos por GN⁺ 2025-11-16 | 1 comentários | Compartilhar no WhatsApp
  • Para marcar o 16º aniversário da abertura do Go como open source, foi organizado um resumo dos principais avanços técnicos do último ano e dos planos futuros
  • Nas versões Go 1.24 e 1.25, houve grandes melhorias em testes, segurança e desempenho de forma abrangente
  • Recursos como synctest, container-aware scheduling e flight recorder reforçam a confiabilidade e a eficiência em ambientes de produção
  • A preparação para a certificação FIPS 140-3 dos pacotes criptográficos e o Green Tea GC melhoram segurança e desempenho
  • O ecossistema Go está se expandindo com desenvolvimento integrado com IA e automação moderna de código, com reforço planejado para suporte a hardware de grande escala e IA

16 anos do Go e visão geral dos lançamentos recentes

  • Em 10 de novembro, foi celebrado o 16º aniversário da abertura do Go como software open source
  • Em fevereiro de 2024 foi lançado o Go 1.24, e em agosto o Go 1.25, seguindo o ciclo regular de lançamentos
  • As duas versões incluem APIs para desenvolvimento de software confiável, reforço de segurança e melhorias de desempenho do runtime
  • A equipe do Go está avançando no desenvolvimento de IA integrada, agentes e infraestrutura com base em Go para responder às mudanças da era da IA generativa

Principais melhorias da linguagem e da biblioteca padrão

  • O pacote testing/synctest, introduzido de forma experimental no Go 1.24 e oficializado no 1.25, simplifica os testes de código assíncrono e paralelo
    • Com virtualização do tempo, transforma testes lentos ou instáveis em testes confiáveis e imediatos
    • Tem uma estrutura profundamente integrada ao runtime do Go e à biblioteca padrão
  • A API testing.B.Loop melhora a usabilidade da API de benchmark existente (B.N) e elimina armadilhas tradicionais
  • Foram adicionadas APIs de limpeza de testes e saída de logs baseadas em Context, aumentando a eficiência no gerenciamento de testes
  • O Go 1.25 introduziu container-aware scheduling, ajustando automaticamente o paralelismo dentro de contêineres
    • Evita throttling de CPU e melhora a latência
  • O recurso flight recorder amplia o rastreador de execução, permitindo registrar em detalhe os eventos imediatamente anteriores a uma falha

Desenvolvimento de software com foco em segurança

  • Os pacotes criptográficos do Go passaram por auditoria da empresa de segurança independente Trail of Bits, que encontrou apenas um único problema de baixa gravidade
  • Em cooperação entre o Go Security Team e a Geomys, foi obtida a certificação CAVP e concluída a preparação para a certificação FIPS 140-3
    • Isso aumenta a viabilidade do uso de Go em ambientes regulados e resolve a dependência de soluções informais existentes
  • A biblioteca padrão do Go está evoluindo para uma abordagem safe by default
    • A API os.Root do Go 1.24 evita vulnerabilidades de path traversal ao acessar o sistema de arquivos

Melhorias na estrutura interna e no desempenho

  • No Go 1.24, a implementação de map foi completamente redesenhada, refletindo projetos modernos de tabelas hash
    • Melhorando o desempenho, reduzindo a latência e aumentando a eficiência de memória
  • O coletor de lixo Green Tea do Go 1.25 reduz a sobrecarga de GC em 10% a 40%
    • Aplica novos algoritmos ajustados ao hardware moderno
    • No Go 1.26, está prevista uma melhoria adicional de 10% em hardware com suporte a AVX-512
    • A ativação por padrão está prevista a partir do Go 1.26

Expansão da stack de desenvolvimento e integração com IA

  • O Go está evoluindo além de uma linguagem para se tornar uma plataforma completa de desenvolvimento
  • O servidor de linguagem gopls ganhou recursos em quatro lançamentos regulares (v0.17~v0.20)
    • Foram adicionados analisadores de código, refatoração, tratamento de tags JSON e um servidor MCP embutido, entre outros
  • Foi introduzido o recurso de modernização automática de código (modernizer)
    • Ele converte automaticamente padrões de código obsoletos em formas modernas e seguras
    • Integrado aos recursos de sugestão da IDE, ajuda a manter o código consistente e auxilia o treinamento com suporte de IA
    • No Go 1.26, o comando go fix deverá ser reformulado para aplicar de uma vez todo o modernizer
  • Em colaboração com a Anthropic e a comunidade, foi lançado o SDK oficial de Go v1.0.0 para o Model Context Protocol (MCP)
    • Oferece suporte a clientes e servidores MCP, com base nos recursos MCP do gopls
    • O ADK for Go do Google fornece, sobre o MCP SDK, um framework para desenvolver sistemas multiagentes
    • Isso demonstra que a concorrência, o desempenho e a confiabilidade do Go são adequados para o desenvolvimento de IA em produção

Próximos planos e comunidade

  • Estão previstos a disponibilidade geral do Green Tea GC, suporte a hardware SIMD e maior escalabilidade multicore
  • Também estão em andamento uma grande atualização de encoding/json, profiling de vazamento de goroutines e melhorias em net/http e unicode
  • Haverá expansão da linguagem, das ferramentas e do sistema de diagnóstico para a combinação entre Go e IA
  • O projeto open source do Go busca ampliar a comunidade de contribuidores e a escalabilidade do processo de desenvolvimento
  • A evolução do Go se baseia nas contribuições da comunidade de usuários e contribuidores, indicando crescimento contínuo no futuro

1 comentários

 
GN⁺ 2025-11-16
Comentários do Hacker News
  • Eu gosto muito de Go. Ele brilha especialmente em ambientes de monorepo. Ao adicionar uma nova aplicação, basta criar uma pasta e colocar um arquivo Go com a função main(). A partir da raiz, go install ./... compila tudo rapidamente
    Quando preciso criar um programa de CLI rápido, essa simplicidade foi realmente genial

    • Fico me perguntando se quase todas as outras linguagens também não conseguem fazer isso
    • Acho que esse caso de uso de monorepo deveria ser mencionado com mais frequência
  • Antigamente diziam que a linguagem não era o gargalo, mas quando vi Go pela primeira vez pensei: “isso é diferente”. Também é muito rápido de aprender — talvez porque a especificação da linguagem seja pequena.
    Na prática, parece 80% dos recursos de Rust com 20% do esforço

    • O bom de Go é que dá para aprender a linguagem inteira em pouco tempo. É possível entender tudo, inclusive concorrência e as armadilhas. Já C# ou C++ são tão complexas que quase ninguém entende o conjunto todo
    • Como disse Rob Pike, Go é uma linguagem projetada para desenvolvedores júnior. Um objetivo importante dentro do Google também era reduzir o tempo de build. Por isso, se houver dependências não usadas, ocorre erro de compilação (fonte)
    • Uma especificação pequena não significa necessariamente simplicidade. Por exemplo, Swift tem uma especificação grande, mas definida de forma frouxa. Cheguei até a encontrar um erro na gramática de literais inteiros ao ler a especificação de Go
    • Mas é uma pena que os 20% restantes dos recursos de Rust representem 80% da utilidade
    • Além disso, Go também está ficando mais complexo. Por exemplo, depois que genéricos foram adicionados, a simplicidade diminuiu
  • Para mim, Go parece um Rust simplificado demais. Correção automática de código, obrigatoriedade de laços e até verificar a existência de chave em map são incômodos.
    Lidar com arrays ou definir enums também é estranho, e as regras de linter da empresa fragmentam o código, fazendo tudo parecer Java corporativo.
    Ainda assim, as interfaces são simples e é rápido de aprender.
    Se Go tivesse enums de verdade, sintaxe de slice mais natural, iterators e atalho de sintaxe para desempacotar resultados, seria muito melhor

    • Um dos problemas de Go é a cultura de nomes curtos para variáveis. Também é desconfortável o primeiro campo da struct agir como herança, ou o controle de acesso ser feito com maiúsculas/minúsculas.
      A biblioteca padrão de JSON também tem vários problemas, como serializar slices vazios como null.
      Mesmo assim, reconheço a rapidez das ferramentas e sua praticidade
    • Eu fiz um fork do lexer/parser de Go e criei uma linguagem experimental com Result[T]/Option[T], sum type, iterator e tuple (projeto agl)
    • Go também tem enum. Só não tem sum type. Arrays e slices são quase idênticos aos de C, e só parecem mais confusos por falta de “mágica”.
      Desempacotamento de resultados é algo que a comunidade discute há muito tempo, mas ainda não existe uma solução elegante
    • Na verdade, Go já tem o pacote iter e slices.Delete.
      Se você remove elementos do meio de um array com frequência, escolheu a estrutura de dados errada
    • Dá para remover com slices.Delete, e coisas como obrigar if err != nil não são problema da linguagem, e sim problema de regra da equipe
  • Por um momento fiquei animado achando que Go seria lançado para o Apple II (referência ao SWEET16)

  • É fácil contribuir para uma nova base de código em Go.
    Graças à simplicidade da linguagem e a ferramentas padrão como gofmt e golangci-lint, todas as bases de código têm uma estrutura parecida.
    Não há discussões sobre ferramentas de build como em comunidades de outras linguagens

    • Estou tentando convencer os cientistas com quem trabalho a usar formatador de código e linter. Acho que forçar isso, como Go faz, foi uma ótima decisão
    • Comecei a aprender Go agora e gosto da filosofia de “fazer de um jeito só”.
      Mas a forma como o operador % lida com números negativos me confundiu
  • A adoção de uma ferramenta automática de modernização de código (modernizer) é interessante.
    Desde o gopls v0.18.0, ela usa análise sintática para encontrar padrões antigos e convertê-los automaticamente em código mais rápido e seguro.
    Assim como o gofmt criou consistência de estilo, o modernizer vai criar consistência de idiomatismos

  • Ao ativar linters como exhaustive, exhaustruct e wrapcheck no golangci-lint, a segurança melhora muito e a velocidade de desenvolvimento aumenta

  • Na nossa empresa, estamos operando um programa de onboarding de 10 semanas para desenvolvedores backend Go (link do plano)
    Já faz 7 anos que migrei de Python para Go, e isso foi um fator-chave para o sucesso da startup

    • Porém, a maioria das vagas relacionadas a Go exige conhecimento de DevOps (AWS, Kubernetes, CI/CD). Posições puras de engenharia de software são raras
    • Link direto
  • No começo eu desconfiava de Go, mas agora é minha linguagem favorita. É simples e poderosa.
    Ainda assim, seria bom se verificação de null, stack trace de erros e checagem exaustiva de sum type viessem por padrão

    • A ferramenta NilAway está sendo desenvolvida para verificação de null
    • A checagem de sum type pode ser feita com golangci-lint
  • Acho que Go seria perfeito se tivesse só mais alguns recursos ligados a programação funcional.
    Sinto falta principalmente de imutabilidade, tratamento de null e exhaustividade em switch.
    Estou compensando isso com o NilAway da Uber, mas seria melhor se houvesse suporte no próprio sistema de tipos

    • Existe um projeto chamado Borgo, mas ainda é imaturo
    • Sonho com sum types e um Go sem ponteiros nil. Gleam vai mais ou menos nessa direção, mas acabou seguindo um caminho muito diferente