Skip to content
Go

Go 1.26: O Novo Garbage Collector ‘Green Tea’ e Evoluções na Ergonomia da Linguagem

Published: Duration: 5:46
0:00 0:00

Transcrição

Apresentadora

E aí, pessoal, bem-vindos de volta ao Allur! Eu sou a Juliana Santos e hoje o nosso papo é sobre uma das linguagens que mais cresceu no coração de quem trabalha com sistemas distribuídos e alta escala: o Go. Se você acompanha o ecossistema, sabe que o time do Google não é de fazer mudanças barulhentas por nada, né? Eles são bem conservadores. Mas o lançamento do Go 1.26 chegou "chutando a porta" no quesito performance e, surpreendentemente, trouxe um carinho especial para a nossa ergonomia no dia a dia.

Apresentadora

E para mergulhar nesse café técnico comigo, hoje eu recebo o Thiago Medeiros. O Thiago é Engenheiro de Software Sênior, especialista em arquiteturas de microsserviços e um entusiasta de longa data da comunidade Go aqui no Brasil. Thiago, seja muito bem-vindo ao Allur! É um prazer ter você aqui, cara.

Convidado

Valeu, Juliana! O prazer é todo meu. Sou fã do Allur e falar de Go é sempre um tema que me empolga, ainda mais com uma release tão "recheada" quanto a 1.26. Tem muita coisa boa pra gente escrutinar hoje!

Apresentadora

Pois é, Thiago, e eu já quero começar pelo que mais chamou a atenção de todo mundo: esse tal de "Green Tea". Esse nome soa super relaxante, né? Tipo um chá verde no fim da tarde. Mas pelo que vi nos benchmarks, o impacto dele é tudo menos relaxado. O que exatamente mudou nesse Garbage Collector pra gente falar em 40% de ganho de performance?

Convidado

Pois é, Juliana, o nome é sugestivo, né? Passa essa ideia de algo "limpo" e "leve". Na verdade, o Green Tea é uma reestruturação profunda. O Go sempre foi conhecido por ter pausas de Garbage Collector muito curtas, o famoso "Stop the World" (STW). Só que, conforme os sistemas foram ficando maiores, manter essa latência baixa sem sacrificar o *throughput* — ou seja, a vazão de processamento — virou um desafio gigante.

Apresentadora

Massa! E assim, 40% não é pouca coisa. No mundo real, além da velocidade, eu li que ele ajuda muito com a questão do consumo de memória em si, especialmente no Kubernetes. Pro pessoal que vive brigando com o OOM Killer, o Green Tea é um aliado?

Convidado

Com certeza! Esse é um ponto crucial. O Green Tea é muito mais agressivo — no bom sentido — na hora de devolver memória para o sistema operacional. Sabe aquela fragmentação chata que ia acumulando e, de repente, o seu container no K8s levava um "kill" porque bateu no limite? Então, o novo algoritmo lida melhor com isso. Ele entende mais rápido o que não está sendo usado e libera o recurso. Pro desenvolvedor, isso significa que você consegue rodar a mesma carga de trabalho com um "footprint" de memória menor. É economia de dinheiro na nuvem, no fim das contas, né?

Apresentadora

Com certeza, e quem não quer economizar no cloud, né? (risos). Agora, mudando um pouco do motor pro painel do carro... Vamos falar de ergonomia. Thiago, eu já vi muito dev Go reclamando daquela verbosidade de ter que criar uma variável temporária só pra pegar o endereço de um ponteiro. O Go 1.26 trouxe o `new(expr)`. Explica pra gente: que dor de cabeça isso resolve?

Convidado

Cara, essa mudança é pequena na escrita, mas gigante no alívio mental! (risos). Imagina o seguinte cenário clássico: você tem uma struct de configuração ou um DTO de uma API onde vários campos são ponteiros para inteiros ou strings, porque eles são opcionais.

Apresentadora

Nossa, total! Eu já vi bases de código com dezenas dessas funções auxiliares. Era quase um ritual de passagem do dev Go.

Convidado

Exatamente! Com o `new(expr)`, isso acabou. Agora você faz `ptr := new(int(42))`. Você aloca e inicializa em uma linha só. O `new` que a gente já conhecia, que só servia pra zerar a memória, agora evoluiu. Isso deixa os testes unitários muito mais limpos e os nossos DTOs muito mais fáceis de ler. É o tipo de coisa que você usa a primeira vez e pensa: "Nossa, como a gente viveu sem isso até agora?".

Apresentadora

Legal demais. É a famosa "Developer Experience" melhorando, né? Mas Thiago, uma dúvida que sempre surge quando uma linguagem muda a sintaxe ou o runtime: e a compatibilidade? Quem tem um sistema legado enorme em Go 1.20, por exemplo, pode atualizar pro 1.26 sem medo de quebrar tudo?

Convidado

Olha, essa é a beleza do Go. A promessa de compatibilidade desde a versão 1.0 é levada muito a sério. O seu código atual vai compilar e rodar no 1.26 sem você mudar uma vírgula. E o melhor: você já ganha os benefícios do Green Tea GC de graça, só por atualizar a versão.

Apresentadora

Que massa! É raro ver uma atualização que traz um ganho de performance tão bruto e, ao mesmo tempo, um "carinho" na sintaxe. Parece que o Go tá amadurecendo muito bem, ouvindo a comunidade mas sem perder aquela essência de simplicidade que o pessoal tanto ama.

Convidado

Com certeza, Juliana. O Go não quer ser a linguagem com mais recursos do mundo, ele quer ser a linguagem onde o código que você escreveu há 5 anos continua sendo fácil de ler e agora roda mais rápido do que nunca. O 1.26 é a prova viva dessa filosofia.

Apresentadora

Show de bola! Bom, pessoal, chegamos ao fim de mais um papo sensacional aqui no Allur. Thiago, muito obrigada por compartilhar sua visão e experiência com a gente. Acho que ficou bem claro que o Go 1.26 não é só mais uma versão, é um marco de maturidade.

Convidado

Valeu demais, Juliana! Sempre que quiser falar de Go ou de sistemas distribuídos, é só chamar. Um abraço pra todo mundo que tá ouvindo!

Apresentadora

Com certeza! E pra você que ouviu a gente até aqui: as notas do episódio com os links para o Go Blog e os exemplos de código da nova sintaxe `new(expr)` estão na descrição. Não deixem de testar o Green Tea nos seus ambientes de staging e ver a mágica acontecer!

Tags

Go Golang Coding backend performance benchmarks memory management