Skip to content
Go

A Revolução dos Gráficos em Go Puro: GoGPU e gogpu/ui v0.1.1

Published: Duration: 7:32
0:00 0:00

Transcript

Apresentadora: E aí, pessoal, bem-vindos de volta ao Allur, o seu ponto de encontro sobre Go, PHP, Laravel e tudo o que há de mais quente no desenvolvimento mobile e backend! Eu sou a Juliana Santos e hoje a gente vai falar de um assunto que, olha... quem programa em Go há algum tempo sabe que era uma dor de cabeça constante. Sabe aquele sonho de criar uma interface gráfica bonitona, rápida, mas sem ter que lutar contra o famigerado CGO? Pois é, esse dia chegou! Apresentadora: E para mergulhar nesse mar de pixels e performance, eu recebo hoje o Rafael Brandão. O Rafa é desenvolvedor sênior, especialista em sistemas de alta disponibilidade e um entusiasta de longa data do ecossistema Go. Ele tem acompanhado de perto essa transição para o Pure Go e testou as versões alpha dessa nova stack. Rafa, seja muito bem-vindo ao Allur! Convidado: Valeu, Juliana! É um prazer enorme estar aqui. Cara, eu tava ansioso por esse papo, porque o que está acontecendo agora no ecossistema Go com o gogpu é, tipo assim, histórico. A gente está finalmente quebrando as correntes que prendiam a linguagem ao C há décadas. Apresentadora: Pois é, Rafael! E para começar, vamos situar a galera. Por muito tempo, se eu quisesse fazer um app desktop em Go com Fyne ou GLFW, eu precisava lidar com o CGO. Explica pra gente: por que isso era tão traumático para o desenvolvedor Go médio? Convidado: Nossa, Juliana, era um "parto", né? O problema do CGO não é nem a performance em si, mas a experiência do desenvolvedor — o famoso DX. No momento em que você ativa o CGO, você perde a maior magia do Go: a portabilidade simples. Se você estivesse no Linux e quisesse gerar um binário pro Windows, boa sorte configurando compiladores cruzados GCC, gerenciando headers do sistema, bibliotecas `.so` ou `.dll`... Era um caos. Sem falar que o tempo de build triplicava porque você tinha que compilar código C no meio do caminho. O gogpu/ui v0.1.1 chega e diz: "esquece tudo isso". Agora é `GOOS=windows go build` e pronto. É libertador, cara! Apresentadora: É o fim do "na minha máquina funciona, mas no CI/CD quebra", né? (risos). Mas vem cá, além da facilidade de compilar, tem a questão da segurança também, certo? Convidado: Com certeza! Quando você usa C puro por baixo dos panos, você está saindo da zona de segurança do Garbage Collector do Go. Você volta para o mundo do gerenciamento manual de memória, onde um ponteiro perdido vira um bug de segurança ou um crash difícil de rastrear. Com essa nova stack Pure Go de 2026, o controle volta para a linguagem. Menos C significa menos vetores de ataque e um código muito mais estável. Apresentadora: Massa! Agora, vamos falar do coração dessa revolução, que é o GoGPU. Eu vi que ele traz uma forma totalmente nova de lidar com Shaders. Geralmente, o pessoal tem que aprender GLSL ou HLSL, que parece grego para muita gente, e enfiar isso como strings dentro do código. Como o GoGPU mudou isso? Convidado: Essa é a parte que mais me explodiu a cabeça, Juliana. Imagine que você quer fazer um processamento paralelo pesado na GPU. Antes, você escrevia um script em GLSL, que é outra linguagem, e passava pro Go como uma string gigante. Se você errasse um ponto e vírgula na string, só descobria em tempo de execução. Com o GoGPU, a gente escreve a lógica do shader usando a sintaxe nativa do Go. Apresentadora: Peraí, tipo... eu uso `func`, `if` e `for` do Go e isso roda na GPU? Convidado: Exatamente! Você define uma função, usa tipos como `float32`, e o compilador do GoGPU traduz essa lógica para os kernels da GPU. Por exemplo, você usa um `gogpu.GlobalInvocationID()` para saber qual thread da GPU está rodando e faz sua conta. Isso tira aquela barreira cognitiva absurda. O desenvolvedor Go não precisa mais ser um "especialista em gráficos" de 1990 para aproveitar o poder da placa de vídeo. É o mesmo ecossistema, a mesma tipagem... é muito fluido. Apresentadora: Cara, isso é revolucionário para visualização de dados e até para IA, imagino. E aí entra o gogpu/ui v0.1.1. Ele usa esse poder todo para a interface, certo? O que muda na prática para o usuário final que vai abrir o aplicativo? Convidado: Muda a fluidez. Sabe quando você abre um app e sente que o scroll é meio "travado" ou que os botões demoram um tiquinho para responder? Muitas vezes é porque a renderização é feita via software (pela CPU). O gogpu/ui renderiza cada botão, cada gráfico e cada janela diretamente na GPU, de forma nativa. A taxa de quadros, o FPS, é constante. É uma experiência de nível industrial. E o melhor: sem precisar instalar o Visual Studio gigante ou headers do DirectX no seu Mac para compilar para Windows. O toolkit abstrai tudo. Apresentadora: É o sonho do "escreva uma vez, compile em qualquer lugar" finalmente virando realidade no desktop. Rafael, você acha que isso vai fazer o Go roubar espaço de tecnologias como Electron ou até do Rust no mundo gráfico? Convidado: Olha, o Electron é muito prático, mas ele é pesado, né? Come RAM que é uma beleza. O Go com gogpu/ui entrega uma performance próxima do C++ e Rust, mas com uma curva de aprendizado muito menor. Eu sinto que para ferramentas de visualização de dados, editores de imagem, ou dashboards de monitoramento em tempo real, o Go vai se tornar a escolha número um. A gente vai ver uma explosão de bibliotecas de gráficos estatísticos e até jogos simples aparecendo agora que a barreira de entrada caiu. Apresentadora: Nossa, eu já imagino as possibilidades! Ferramentas de análise de dados que antes precisavam de um front-end pesado em React agora podem ser um binário único, leve e que voa na tela. Convidado: Exatamente! É o que a gente chama de unificação de ferramentas. O "Gopher moderno" não precisa mais ser apenas o cara do backend. Ele agora é o cara que entrega a solução completa: do processamento de dados na GPU até a interface que o cliente final vai usar. Tudo "Pure Go". Apresentadora: Sensacional, Rafael! O papo tá muito bom, mas a gente tá chegando no final. Para quem ouviu a gente e ficou com os olhos brilhando pra testar o gogpu/ui v0.1.1, qual o melhor caminho? Convidado: O melhor caminho é dar um pulo no repositório oficial no GitHub e conferir os exemplos. A documentação da v0.1.1 está excelente e já tem vários "boilerplates" para você começar. E a dica de ouro: atualize seu Go para a versão 1.26, porque as otimizações de linkagem que eles fizeram lá são o que permite essa mágica do Pure Go acontecer sem perdas. É hora de preparar os projetos, porque a era pós-CGO começou de vez! Apresentadora: É isso aí! O futuro é nativo, acelerado e, acima de tudo, simples. Rafael, muito obrigada por compartilhar sua experiência com a gente hoje. Foi um prazer! Convidado: Valeu, Juliana! Eu que agradeço, legal demais trocar essa ideia. Até a próxima, pessoal! Apresentadora: E valeu a você por sintonizar o Allur! Se você gostou desse episódio, compartilha com aquele seu amigo que ainda sofre compilando CGO ou que vive reclamando da memória do Electron. Todas as notas do episódio e links estão no nosso site. Eu sou a Juliana Santos e a gente se vê no próximo episódio. Tchau!

Tags

Go Golang gpu acceleration software engineering open-source performance