Acompanhe o que está acontecendo no ecossistema Go: novos releases, propostas em discussão, bibliotecas que valem ficar de olho e eventos da comunidade — comentado em português para desenvolvedores brasileiros.

Segurança Go: seis padrões sutis para revisar no código

Segurança Go vai além de scanners: veja seis padrões sutis de revisão de código que podem gerar falhas reais em produção.

TL;DR: a elttam publicou uma nova lista de notas de revisão de código em Go com problemas que passam fácil por scanners automáticos: overflow silencioso, httputil.ReverseProxy com Director, ponteiros compartilhados de url.URL, bytes nulos atravessando cgo, MarshalJSON que falha por causa do receiver e APIs JSON vulneráveis a CSRF. O valor do texto está menos em uma grande novidade da linguagem e mais em transformar detalhes conhecidos da biblioteca padrão em uma checklist prática para revisar serviços Go em produção.

Ler mais →

Regiões de memória no Go miram menos pressão no GC

Regiões de memória no Go propõem um caminho opt-in para reduzir pressão no GC sem espalhar arenas por APIs públicas.

A proposta de regiões de memória no Go tenta reduzir trabalho do GC em aplicações com muitas alocações temporárias, sem obrigar cada biblioteca a aceitar um parâmetro de arena. Ainda não é uma API aceita nem pronta para uso, mas sinaliza uma direção importante: um mecanismo opt-in, local a uma goroutine, que reaproveita memória ao fim de um escopo quando objetos não escapam.

Por que isso existe

O experimento de arenas do Go mostrou que há ganhos reais em alguns sistemas. O documento cita aplicações com melhora na faixa de 10% a 15%, principalmente quando muito lixo temporário deixa de pressionar o coletor. O problema é o custo de ergonomia: se uma função precisa alocar dentro de uma arena, a API tende a ganhar um parâmetro extra, e isso se espalha para chamadas intermediárias, bibliotecas e até possíveis variantes da biblioteca padrão.

Ler mais →

pkg.go.dev ganha API oficial para módulos Go

API oficial do pkg.go.dev permite consultar módulos, pacotes, versões, símbolos e vulnerabilidades Go sem depender de scraping.

TL;DR: o time Go anunciou uma API oficial do pkg.go.dev para consultar metadados de módulos e pacotes publicados no ecossistema Go. Em vez de fazer scraping da interface web, ferramentas agora podem usar endpoints JSON em https://pkg.go.dev/v1beta para buscar versões, pacotes, símbolos, dependentes e vulnerabilidades. A API ainda está em v1beta, mas já é um passo importante para IDEs, automações de CI, inventários de dependências e assistentes de código que precisam de contexto confiável sobre bibliotecas Go.

Ler mais →

Go dynamic TLS mira c-shared no Linux arm64

Proposta de Go dynamic TLS melhora bibliotecas c-shared e c-archive no Linux arm64, especialmente em ambientes Musl e containers.

TL;DR: uma nova proposta de design no repositório golang/proposal descreve suporte a general dynamic TLS no toolchain do Go. A mudança não adiciona API à linguagem nem muda código Go comum, mas pode remover uma dor importante para quem empacota Go como biblioteca c-shared ou c-archive no Linux arm64, especialmente em sistemas baseados em Musl. O objetivo é permitir que o runtime encontre o ponteiro da goroutine atual de forma compatível com carregamento dinâmico, sem depender de atalhos como LD_PRELOAD.

Ler mais →

Go 1.27 deve ganhar perfil para leak de goroutines

Perfil goroutineleak proposto para Go 1.27 usa o GC para encontrar vazamentos de goroutines bloqueadas em aplicações reais.

TL;DR: uma proposta aceita para o Go 1.27 adiciona um novo perfil de runtime/pprof, chamado goroutineleak, para detectar goroutines que ficaram bloqueadas para sempre. A ideia é usar uma rodada especial do garbage collector para separar goroutines que ainda podem voltar a executar daquelas presas em objetos de sincronização inalcançáveis. Isso não substitui boas práticas com context, timeouts e fechamento correto de channels, mas pode virar uma ferramenta importante para investigar leaks em serviços Go de longa duração.

Ler mais →

Go prepara runtime.freegc para reduzir pressão no GC

runtime.freegc é uma proposta do Go para reutilizar memória morta mais cedo e reduzir pressão no GC sem mudar APIs do usuário.

TL;DR: uma nova proposta de design no repositório golang/proposal descreve runtime.freegc, um mecanismo interno para o compilador e o runtime devolverem memória comprovadamente morta ao alocador antes de uma rodada normal do GC chegar nela. Não é uma API para aplicações chamarem manualmente. A promessa é reduzir taxa efetiva de alocação, ciclos de garbage collection e custo de CPU em padrões comuns, como crescimento repetido de slices, strings.Builder, mapas e decodificação com muita memória temporária.

Ler mais →