finds.dev← search

// the find

protocolbuffers/protobuf-go

★ 3,357 · Go · BSD-3-Clause · updated Sep 2026

Go support for Google's protocol buffers

This is the Go module google.golang.org/protobuf, which holds both the protoc-gen-go code generator and the runtime that serializes, reflects on, and compares protobuf messages. Anyone building Go services that speak protobuf or gRPC is running this code, so it is the place to look when a marshaling or reflection behavior surprises you.

- The protoreflect API is the real design win. Generated and dynamic messages both go through one reflective interface, which is why protojson, prototext, protocmp, and dynamicpb work without per-type code.

- Fuzzing is wired in. The wire, JSON, and text decoders each have a fuzz target with a seed corpus, and there is an oss-fuzz build script in internal/fuzz, which is where decoder bugs usually hide.

- Editions handling is tested against checked-in binary fixtures. internal/editiondefaults has a defaults .binpb, and feature_resolution_test uses its own descriptor fixture, so feature resolution is checked against real descriptors rather than hand-written expectations.

- The conformance harness keeps its known failures in files (failing_tests.txt and failing_tests_text_format.txt), so the gaps against the upstream suite are listed instead of hidden.

- The compatibility promise has carve-outs that matter in practice. The README reserves the right to add fields and methods to generated types and says injecting code into generated files is unsupported, so helper methods added to .pb.go output can break on the next generator release.

- Generator and runtime have to move together. The README asks that generated code come from a protoc-gen-go version identical to the runtime, so each generator bump means regenerating checked-in .pb.go files and bumping the module in the same change.

- Bug reports go to golang/protobuf, the module for the old v1 API, not to this repo. The build badge also still links to travis-ci.org while the checked-in CI runs on GitHub Actions, which suggests the README is not kept current.

- The README has no install or quickstart section. It is mostly a package index plus a long essay on the history of proto.Unmarshal, and setup is left to protobuf.dev.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →