Skip to content
Latchkey

buf vs protoc: Ferramental Protobuf moderno vs o compilador

protoc é o compilador oficial de Protocol Buffers; buf envolve e moderniza o fluxo de trabalho com linting, detecção de breaking changes e gerenciamento de dependências.

protoc compila arquivos .proto para código via plugins, mas gerenciar includes, plugins e consistência é manual. buf oferece um fluxo de trabalho de nível mais alto (buf.yaml, lint, checagem de breaking changes, plugins remotos, um schema registry) sobre a mesma compilação.

bufprotoc
PapelFluxo: lint, breaking, generateCompilador de referência
LintingIntegradoNenhum
Detecção de breaking changesIntegradaNenhuma
Gerenciamento de dependênciasbuf.yaml + registryInclude paths manuais
Configbuf.yaml / buf.gen.yamlFlags de linha de comando / scripts

Onde o buf vence

buf transforma protobuf em um fluxo de trabalho gerenciado: faz lint de schemas contra regras de estilo, detecta breaking changes contra um baseline, gerencia dependências e gera código com uma config clara. No CI isso captura mudanças de API incompatíveis antes que sejam publicadas, algo que o protoc puro não consegue fazer.

Onde o protoc ainda cabe

protoc é o compilador canônico e continua sendo a escolha certa para setups mínimos, plugins incomuns ou ambientes onde você não quer mais uma ferramenta. buf, no fim das contas, depende dos mesmos conceitos de geração, e alguns pipelines são simples o suficiente para que protoc via script seja suficiente.

No CI

Um pipeline comum roda buf lint e buf breaking em cada PR e, então, buf generate. Isso fornece gates de qualidade de schema que o protoc não tem. Se você só precisa de geração de código e tem um setup de plugins estável, protoc mais um script funciona.

O veredito

Use buf quando você quer linting de protobuf, detecção de breaking changes e dependências gerenciadas no CI; use protoc para necessidades de geração mínimas ou incomuns. A maioria dos times que mantêm schemas compartilhados se beneficia do buf.

Guias relacionados