← Back to all sparks
P

Protocol Buffers

DEVOPS
Velocity5.0

Language-neutral mechanism for serializing structured data

Protobuf is using Edition 2026 to tighten defaults the language spent years leaving loose.

serializationprotobuf-editionsbazeldeprecationsjson
Current state
The v36.0 release candidates are the active work, with v35.x still receiving point releases. The through-line is Edition 2026: default symbol visibility becomes STRICT, a naming-style enforcement feature landed to prevent field name collisions, and reserving field number INT_MAX is now disallowed. Alongside that, a new json_options.proto and json_enumvalue_options.proto are being added to release artifacts across C++, Java, and upb, and deprecation warnings are accumulating on older reflection and generic-service APIs.
Where it's heading
Editions are being used as the mechanism to change defaults that could never be changed in proto2 or proto3 without breaking the world — visibility, naming, reserved ranges. Each edition becomes a place to make the strict choice the default for new code while old code stays on its declared edition. In parallel the build story is consolidating on Bazel 9, with Bazel 7 support dropped in v35.0 and per-language Bazel 9 test coverage added across csharp, objc, php, python, rust, and upb.
Prediction
Expect v36.0 to reach general availability from the current rc line, carrying the Edition 2026 defaults and the JSON options gencode with it. The deprecation warnings on generic services and Reflection enum accessors mark the next removals rather than this release's.

Recent moves

  1. 15d ago

    Protocol Buffers v36.0-rc2

    The second v36.0 candidate ships the json_options gencode into release artifacts for C++, Java, and upb, and adds deprecation warnings on Reflection enum accessors. It is refinement of the v36 surface rather than new direction, with the Edition 2026 work already set in rc1.

    View source ↗
  2. 15d ago

    Objective-C tag for the v36.0-rc2 release

    A language-specific tag mirroring the v36.0-rc2 release for Objective-C, with no content of its own. These tags shadow every protobuf release and carry no separate changes.

    View source ↗
  3. 1mo ago

    Protocol Buffers v36.0-rc1

    The first v36.0 candidate is where the Edition 2026 defaults land: STRICT default symbol visibility, a ban on reserving field number INT_MAX, and deprecation warnings for generic services. It also extends Bazel 9 test coverage across the language runtimes, continuing the build migration started in v35.0.

    View source ↗
  4. 1mo ago

    Objective-C tag for the v36.0-rc1 release

    The Objective-C tag accompanying v36.0-rc1, carrying only the tag itself. Noise in the feed rather than a distinct release.

    View source ↗
  5. 2mo ago

    Protocol Buffers v35.1

    A point release on the stable v35 line that breaks protobuf's dependency on Bazel's proto fragment, respecting only the Starlark toolchain flags. The release notes flag this as a break from v35.0 that restores v34.x behaviour, so anyone who adopted v35.0 early needs to check their toolchain configuration.

    View source ↗
  6. 2mo ago

    Objective-C tag for the v35.1 release

    The Objective-C tag for v35.1, content-free like its siblings. It appears in the feed as a separate row despite being part of the same release.

    View source ↗