Language Guide (editions)
Covers how to use the edition 2023 revision of the Protocol Buffers language in your project.
Covers how to use the edition 2023 revision of the Protocol Buffers language in your project.
Covers how to use the proto2 revision of Protocol Buffers language in your project.
Covers how to use the proto3 revision of the Protocol Buffers language in your project.
Covers the limits to number of supported elements in proto schemas.
Provides direction for how best to structure your proto definitions.
Explains how enums currently work in Protocol Buffers vs. how they should work.
Explains how Protocol Buffers encodes data to files or to the wire.
Covers how to use the Protobuf to JSON conversion utilities.
Describes some commonly-used design patterns for dealing with Protocol Buffers.
Links out to many open source projects that seek to add useful functionality on top of Protocol Buffers.
Describes in detail what extension declarations are, why we need them, and how we use them.
Explains the various presence-tracking disciplines for protobuf fields. It also explains the behavior of explicit presence-tracking for singular proto3 fields with basic types.
Explains how serialization works and why it is not canonical.
Covers why Protobuf doesn’t support nullable setters and getters
An overview of best practices topics.
Shares vetted best practices for authoring Protocol Buffers.
A future-proof API is surprisingly hard to get right. The suggestions in this document make trade-offs to favor long-term, bug-free evolution.
All proto definitions should have one top-level element and build target per file.