GOMAXPROCS Inteligente para Containers no Go 1.25

Go 1.25 introduz configuração automática de GOMAXPROCS baseada em limites de CPU de containers, evitando throttling e melhorando a performance em produção.

Go 1.25 inclui novos padrões de GOMAXPROCS que reconhecem limites de containers, proporcionando comportamento mais sensato para muitas cargas de trabalho em containers, evitando throttling que pode impactar a latência de cauda, e melhorando a prontidão do Go para produção.

Neste post, vamos explorar como Go agenda goroutines, como esse agendamento interage com controles de CPU de containers, e como Go pode performar melhor com consciência dos controles de CPU.

Ler mais →

Go Completa 16 Anos: Um Marco na História da Linguagem

Go celebra 16 anos em 2024: de linguagem experimental no Google a top 10 global. Retrospectiva com generics, Green Tea GC, FIPS 140-3 e o futuro do Go.

Em 10 de novembro de 2024, celebramos o 16º aniversário do lançamento open source do Go!

Lançamos o Go 1.24 em fevereiro e o Go 1.25 em agosto, seguindo nossa cadência de releases bem estabelecida. Continuando nossa missão de construir a plataforma de linguagem mais produtiva para sistemas de produção, essas versões incluíram novas APIs para software robusto e confiável, avanços significativos em segurança, e melhorias importantes sob o capô.

Melhorias na Linguagem e Biblioteca Padrão

testing/synctest

O novo pacote testing/synctest, lançado experimentalmente no Go 1.24 e graduado no Go 1.25, simplifica significativamente a escrita de testes para código concorrente e assíncrono. O pacote funciona virtualizando o próprio tempo, transformando testes que eram lentos e instáveis em testes confiáveis e quase instantâneos.

Ler mais →

Flight Recorder: Nova Ferramenta de Diagnóstico no Go 1.25

Flight Recorder no Go 1.25: capture traces de execucao circulares em servidores Go para diagnosticar gargalos de performance sem overhead em producao.

Em 2024, introduzimos ao mundo os execution traces mais poderosos do Go. Naquele post, demos uma prévia de novas funcionalidades que poderíamos desbloquear, incluindo o flight recording. Estamos felizes em anunciar que o flight recording está agora disponível no Go 1.25.

O Problema com Traces Tradicionais

O pacote runtime/trace fornece uma API para coletar traces de execução chamando runtime/trace.Start e runtime/trace.Stop. Isso funciona bem para testes e benchmarks.

Porém, em serviços web de longa duração — o tipo de aplicação pelo qual Go é conhecido — isso não é suficiente. Servidores web podem ficar no ar por dias ou semanas, e coletar um trace da execução inteira produziria dados demais.

Ler mais →

Green Tea: O Novo Garbage Collector do Go

Green Tea GC do Go 1.25 reduz overhead do garbage collector em ate 40%. Ative com GOEXPERIMENT=greenteagc. Ja em producao no Google, sera padrao no Go 1.26.

O Go 1.25 inclui um novo garbage collector experimental chamado Green Tea, disponível configurando GOEXPERIMENT=greenteagc no momento do build.

Muitos workloads gastam cerca de 10% menos tempo no garbage collector, mas alguns veem reduções de até 40%!

Já está em uso no Google em produção, então encorajamos você a testar. Baseado nos dados que temos agora, planejamos torná-lo o padrão no Go 1.26.

Como Funciona o Garbage Collection

O propósito do garbage collection é recuperar e reutilizar automaticamente memória que não está mais sendo usada pelo programa.

Ler mais →