You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: index.xml
+6-3Lines changed: 6 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -16,7 +16,9 @@ Feature Definition In addition to supporting editions and the global features we
16
16
This information is a collection of discovered limitations by many engineers, but is not exhaustive and may be incorrect/outdated in some areas. As you discover limitations in your work, contribute those to this document to help others.
17
17
Number of Fields Message with only singular proto fields (such as Boolean):
18
18
~2100 fields (proto2) ~3100 (proto3 without using optional fields) Empty message extended by singular fields (such as Boolean):</description></item><item><title>Style Guide</title><link>https://protobuf.dev/programming-guides/style/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/programming-guides/style/</guid><description>This document provides a style guide for .proto files. By following these conventions, you&rsquo;ll make your protocol buffer message definitions and their corresponding classes consistent and easy to read.
19
-
Note that protocol buffer style has evolved over time, so it is likely that you will see .proto files written in different conventions or styles. Respect the existing style when you modify these files. Consistency is key. However, it is best to adopt the current best style when you are creating a new .</description></item><item><title>Enum Behavior</title><link>https://protobuf.dev/programming-guides/enum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/programming-guides/enum/</guid><description>Enums behave differently in different language libraries. This topic covers the different behaviors as well as the plans to move protobufs to a state where they are consistent across all languages. If you&rsquo;re looking for information on how to use enums in general, see the corresponding sections in the proto2 and proto3 language guide topics.
19
+
Standard File Formatting Keep the line length to 80 characters. Use an indent of 2 spaces. Prefer the use of double quotes for strings. File Structure Files should be named lower_snake_case.proto.
20
+
All files should be ordered in the following manner:
21
+
License header (if applicable) File overview Syntax Package Imports (sorted) File options Everything else Identifier naming styles Protobuf identifiers use one of the following naming styles:</description></item><item><title>Enum Behavior</title><link>https://protobuf.dev/programming-guides/enum/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/programming-guides/enum/</guid><description>Enums behave differently in different language libraries. This topic covers the different behaviors as well as the plans to move protobufs to a state where they are consistent across all languages. If you&rsquo;re looking for information on how to use enums in general, see the corresponding sections in the proto2 and proto3 language guide topics.
20
22
Definitions Enums have two distinct flavors (open and closed). They behave identically except in their handling of unknown values.</description></item><item><title>Encoding</title><link>https://protobuf.dev/programming-guides/encoding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/programming-guides/encoding/</guid><description>This document describes the protocol buffer wire format, which defines the details of how your message is sent on the wire and how much space it consumes on disk. You probably don&rsquo;t need to understand this to use protocol buffers in your application, but it&rsquo;s useful information for doing optimizations.
21
23
If you already know the concepts but want a reference, skip to the Condensed reference card section.
22
24
Protoscope is a very simple language for describing snippets of the low-level wire format, which we&rsquo;ll use to provide a visual reference for the encoding of various messages.</description></item><item><title>ProtoJSON Format</title><link>https://protobuf.dev/programming-guides/json/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/programming-guides/json/</guid><description>Protobuf supports a canonical encoding in JSON, making it easier to share data with systems that do not support the standard protobuf binary wire format.
@@ -295,11 +297,12 @@ Defines utilities for the TypeResolver. Classes in this fileFile MembersThese de
295
297
The following sections outline the set of breaking changes that we plan to include in the 26.0 release of protocol buffers. Note that plans can and do change. These are potential breaking changes to be aware of, but they may not happen in this particular release, or they may not happen at all.</description></item><item><title>Changes announced December 13, 2024</title><link>https://protobuf.dev/news/2024-12-13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-12-13/</guid><description>Removing a Reflection-related Function In v30.x, we are removing the following reflection-related function: MutableRepeatedFieldRef&lt;T&gt;::Reserve().
296
298
An upcoming performance improvement in RepeatedPtrField is incompatible with this API. The improvement is projected to accelerate repeated access to the elements of RepeatedPtrField, in particular and especially sequential access.</description></item><item><title>Changes announced December 18, 2024</title><link>https://protobuf.dev/news/2024-12-18/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-12-18/</guid><description>Go Protobuf: The new Opaque API Back in March 2020, we released the google.golang.org/protobuf module, a major overhaul of the Go Protobuf API. This package introduced first-class support for reflection, a dynamicpb implementation and the protocmp package for easier testing.
297
299
That release introduced a new protobuf module with a new API. Today, we are releasing an additional API for generated code, meaning the Go code in the .pb.go files created by the protocol compiler (protoc).</description></item><item><title>Changes announced on December 27, 2023</title><link>https://protobuf.dev/news/2023-12-27/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2023-12-27/</guid><description>Ruby Breaking Changes The following changes are planned for the 26.x line:
298
-
Fix RepeatedField#each_index to have the correct semantics. (#11767) Remove Ruby DSL and associated compatibility code, which will complete the migration announced in April. Message#to_h fixes: Remove unset oneof fields. (#6167) Remove unset sub-message fields Use message&rsquo;s pool for encode_json/decode_json. Remove the deprecated syntax accessor, FileDescriptor.syntax and add semantic checks in its place: FieldDescriptor.has_presence to test if a field has presence.</description></item><item><title>Changes announced December 4, 2024</title><link>https://protobuf.dev/news/2024-12-04/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-12-04/</guid><description>We are planning to modify the Protobuf debug APIs (including Protobuf AbslStringify, proto2::ShortFormat, proto2::Utf8Format, Message::DebugString, Message::ShortDebugString, Message::Utf8DebugString) in v30 to redact sensitive fields annotated by debug_redact; the outputs of these APIs will contain a per-process randomized prefix, and so will no longer be parseable by Protobuf TextFormat Parsers.
300
+
Fix RepeatedField#each_index to have the correct semantics. (#11767) Remove Ruby DSL and associated compatibility code, which will complete the migration announced in April. Message#to_h fixes: Remove unset oneof fields. (#6167) Remove unset sub-message fields Use message&rsquo;s pool for encode_json/decode_json. Remove the deprecated syntax accessor, FileDescriptor.syntax and add semantic checks in its place: FieldDescriptor.has_presence to test if a field has presence.</description></item><item><title>Changes announced December 4, 2024</title><link>https://protobuf.dev/news/2024-12-04/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-12-04/</guid><description>We are planning to modify the Protobuf debug APIs for C++ (including Protobuf AbslStringify, proto2::ShortFormat, proto2::Utf8Format, Message::DebugString, Message::ShortDebugString, Message::Utf8DebugString) in v30 to redact sensitive fields annotated by debug_redact; the outputs of these APIs will contain a per-process randomized prefix, and so will no longer be parseable by Protobuf TextFormat Parsers.
299
301
Motivation Currently Protobuf debug APIs print every field in a proto into human-readable formats. This may lead to privacy incidents where developers accidentally log Protobuf debug outputs containing sensitive fields.</description></item><item><title>Changes announced on December 5, 2023</title><link>https://protobuf.dev/news/2023-12-05/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2023-12-05/</guid><description>Java Breaking Changes In v26, we are planning a major version bump for Java per our breaking changes policy and version support policy.
300
302
The following sections outline the set of breaking changes that we plan to include in the 26.0 release of protocol buffers. Note that plans can and do change. These are potential breaking changes to be aware of, but they may not happen in this particular release, or they may not happen at all.</description></item><item><title>Changes Announced on February 27, 2024</title><link>https://protobuf.dev/news/2024-02-27/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-02-27/</guid><description>Dropping Ruby 2.7 Support As per our official Ruby support policy, we will be dropping support for Ruby 2.7 and lower on March 31, 2024. The minimum supported Ruby version will be 3.0.</description></item><item><title>Changes announced February 5, 2024</title><link>https://protobuf.dev/news/2024-02-05/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-02-05/</guid><description>This topic covers breaking changes in Java, C++, and Python in the 26.x line.
301
303
JSON Formatter Option Changes Starting in the 26.x line, the JSON formatter option to print default-valued fields is replaced with a fixed way to handle proto2 and proto3 optional fields consistently.
302
-
Java: includingDefaultValueFields() is replaced with alwaysPrintFieldsWithNoPresence(). C++: always_print_default_values is replaced with always_print_fields_with_no_presence=True. Py: including_default_value_fields=True is replaced with always_print_fields_with_no_presence=True. The new flag behaves identically to the old flag on proto3 messages, but no longer applies to proto2 optional fields.</description></item><item><title>Changes announced January 31, 2024</title><link>https://protobuf.dev/news/2024-01-31/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-01-31/</guid><description>This topic covers breaking changes in Python in the 26.x line.
304
+
Java: includingDefaultValueFields() is replaced with alwaysPrintFieldsWithNoPresence(). C++: always_print_default_values is replaced with always_print_fields_with_no_presence=True. Py: including_default_value_fields=True is replaced with always_print_fields_with_no_presence=True. The new flag behaves identically to the old flag on proto3 messages, but no longer applies to proto2 optional fields.</description></item><item><title>Changes announced January 23, 2025</title><link>https://protobuf.dev/news/2025-01-23/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2025-01-23/</guid><description>Poison Java gencode We are patching a change into the 25.x branch that will poison Java gencode that was created prior to the 3.21.7 release. We will then mark all versions of Java protobuf from 3.21.7 through 3.25.5 as vulnerable to the footmitten CVE.
305
+
After this change is patched in, protobuf will throw an UnsupportedOperationException from the makeExtensionsImmutable method unless you set the system property &ldquo;-Dcom.google.protobuf.use_unsafe_pre22_gencode&rdquo;. Using this system property can buy you some time if you can&rsquo;t update your code immediately, but should be considered a short-term workaround.</description></item><item><title>Changes announced January 31, 2024</title><link>https://protobuf.dev/news/2024-01-31/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-01-31/</guid><description>This topic covers breaking changes in Python in the 26.x line.
303
306
Python Breaking Changes Removing setup.py and setup.cfg support from GitHub In the 26.x release, setup.py and setup.cfg will no longer be present in the python/ directory of the GitHub repository or GitHub release tarballs. This means it will no longer be possible to build a Python package directly from the GitHub repo or release tarball.
304
307
The Python source packages published on PyPI will continue to have a setup.</description></item><item><title>Changes announced January 5, 2024</title><link>https://protobuf.dev/news/2024-01-05/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://protobuf.dev/news/2024-01-05/</guid><description>This topic covers breaking changes in Ruby and Python in the 26.x line.
305
308
Ruby Breaking Changes Freeze Is Now Recursive in Ruby Starting in the 26.x line, when freeze is applied it will be applied recursively, affecting all sub-messages, maps, and repeated fields.
0 commit comments