A história da linguagem Go

Sala de reunião em 2007 com o gopher oficial do Go no quadro

Go nasceu num quadro branco do Google, em 21 de setembro de 2007, porque C++ demorava demais para compilar. Em novembro de 2025 a linguagem fez 16 anos de código aberto. Em setembro de 2026 a série estável é a 1.27.1. Docker, Kubernetes, Terraform, o go que você instala no Linux — tudo isso desce dessa reunião de três pessoas.

Por que uma linguagem nova

Google no fim dos anos 2000: servidores em C++ e Java, builds de três quartos de hora, concorrência na unha, dependências que não fechavam. Rob Pike descreveu o recado em Go at Google: Language Design in the Service of Software Engineering: não era moda linguística, era engenharia de software em escala. Compilar rápido, tipar estático, falar com a rede sem um framework de threads, e um binário só.

O FAQ oficial fecha a origem: Robert Griesemer, Rob Pike e Ken Thompson começaram a rabiscar metas no quadro no dia 21 de setembro de 2007. Em poucos dias virava plano. Em janeiro de 2008 Ken já tinha um compilador que emitia C. Em maio, Ian Lance Taylor, por conta própria, começava um frontend GCC. Russ Cox entrou no fim de 2008 e tirou o protótipo do laboratório.

Unix, Plan 9, CSP

Os três currículos explicam o gosto da língua. Ken Thompson co-criou o Unix e a linguagem B. Pike veio do Plan 9 e do Inferno, co-inventou UTF-8 com Thompson, e passou décadas em linguagens concorrentes — Newsqueak, Alef, Limbo — todas na linha do CSP de Tony Hoare (1978). Griesemer veio de compilador: HotSpot da Java, V8. Go herda o minimalismo Unix, os canais do CSP e a teimosia de um runtime que compila em segundos.

O nome surgiu no e-mail de Pike em 25 de setembro de 2007: “go”. Curto, verbo, domínio fácil. “Golang” é o apelido de busca — o golang.org existia porque go.org não estava livre. O site canônico hoje é go.dev.

10 de novembro de 2009

Go virou projeto público nesse dia. O mascote — o gopher azul de olhos enormes — veio com o lançamento. Renée French, que já tinha desenhado o coelho do Plan 9 (e é casada com Pike), adaptou um gopher de uma camiseta da WFMU. Chamou-se Gordon um tempo; desde 2010 é só “the Go gopher”. As GopherCon do mundo inteiro saíram daí.

Ainda não era Go 1. Havia dois compiladores: o gc (a linha Plan 9, 6g/8g) e o gccgo do Taylor. A biblioteca padrão copiava o gosto do Plan 9 — o pacote fmt inclusive o nome.

Go 1.0 e a promessa

28 de março de 2012: Go 1.0. O contrato que segurou a adoção: programa escrito para Go 1 continua compilando em qualquer 1.x. Não haverá Go 2 que quebre o mundo. Empresas apostaram. O ritmo virou semestral (fevereiro e agosto, com atraso de dias, não de anos).

Marcos que importam no Linux:

  • 1.5 (agosto de 2015): o compilador passa a ser escrito em Go (self-hosting); GC concorrente.
  • 1.11 (agosto de 2018): módulos, ainda experimentais. Adeus GOPATH como prisão.
  • 1.13 (2019): módulos oficiais; errors.Is / %w.
  • 1.16 (2021): //go:embed, módulos default.
  • 1.18 (15 de março de 2022): generics — type parameters. O pedido mais antigo da FAQ.
  • 1.21 (2023): GOTOOLCHAIN baixa sozinho a versão que o go.mod pede; min/max; pacotes slices e maps.
  • 1.22 (2024): loop var por iteração (fim do classico bug do for); roteamento melhor no net/http.
  • 1.25 (agosto de 2025): GC experimental Green Tea (10–40% menos custo de coleta em muitos serviços).
  • 1.26 (10 de fevereiro de 2026): Green Tea evolui; modernizers no go fix.
  • 1.27 (agosto de 2026; 1.27.1 em 1º de setembro): métodos genéricos, proposta do Griesemer aprovada em março de 2026.

A infra da internet

Docker (2013) é Go. Kubernetes também. Terraform, Prometheus, o cliente do Git, metade das CLIs de nuvem. Um binário estático, sem VM, sem node_modules de 400 MB — isso vendeu a língua para quem opera Linux. No ranking TIOBE de 2026 o Go oscila perto da 12ª casa; no GitHub e nos repositórios de infra, o peso é outro.

A concorrência é o cartão: go func(), canais, select. Não é Erlang, não é Java com thread pool. É CSP que cabe num syslog.

O que Go recusou

Sem herança de tipos, sem exceção no estilo throw, sem macros, sem overload de método. Generics chegaram tarde e estreitos. Métodos genéricos só em 2026. A FAQ ainda diz: se você sente falta de X, talvez Y já cubra. Pike, em 2023 (What We Got Right, What We Got Wrong), admite o que pesou: o gopher acertou; o GOPATH demorou a morrer; a comunicação do “porquê” chegou em 2013, quatro anos depois do launch.

No Linux, hoje

Instalar a 1.27 no Ubuntu/Debian: o howto atualizado Instalando Golang no Linux (tarball do go.dev, snap ou apt). O irmão de 2017, com o 1.8.3, ficou em Instalando Golang 1.8.3 no Linux. O mapa das linguagens: As 7 principais linguagens.

VER=$(curl -fsSL 'https://go.dev/VERSION?m=text' | head -n1)
echo "$VER"

O que ficou

Três pessoas, um quadro, uma língua que recusou peso e ganhou a nuvem. Dezesseis anos depois do open source, o contrato da 1.x ainda vale e o gopher ainda é azul. Fontes: FAQ, Go’s Sweet 16, Pike, dez anos, wiki e notas de release em go.dev/doc/devel/release.