Found new managed modules references - #1304
Merged
Merged
Conversation
app-token-modules
Bot
requested review from
jhump,
oliversun9 and
pkwarren
as code owners
August 21, 2026 17:00
| }, | ||
| { | ||
| "name": "v36.0", | ||
| "digest": "3e8040d233c15147282f1085604c7ea64c65d9b6cf2a56b269aba743316aab6324eed1877878499fcb9c8a901e6b38bfeff37dc35a0cb36b2217ee150c4c8738" |
There was a problem hiding this comment.
[Posted at 2026-08-21T17:01:06Z]
Intermediate transition
$ casdiff v35.1 \
v36.0 \
--format=markdown7 files changed: 0 removed, 0 renamed, 5 added, 2 changed content.
7 files changed: 0 removed, 0 renamed, 5 added, 2 changed content.
Files added:
+ shake256:4b1a042a089b54eacd4397204bb63b44d0accd04ecb9dce136e88036e2428066993ae9ac0ae4f087c3ca24ea3b77677b3dc9fffe6b61c5a675dfc3e463a054d6 google/protobuf/c_sharp_features.proto
+ shake256:f1f71bac409338411d51f63a531f528e76a5bf969189464eff89578145f8053f44d4ed6feee3dd27a539900277667fb4af52de4d6c5cb3bf0d0dd61b7ff83405 google/protobuf/cpp_file_options.proto
+ shake256:789d7e0602bc58e7b920080a702b416fbbebaabf797ca235930a2191c13a3c6ba0219af9589ee4bcdc40395016fbf1616840c63db5135f9d5538ce01670c4fe4 google/protobuf/cpp_options.proto
+ shake256:4c1e5d34bac0ace47b2d24778ce47f3bcf1c17dc41da25b3e8e314042d2c412fdd1e41d7053f099db7699ccf148ab6b32260d66d5b57e385fb60ccd5d9aab3a6 google/protobuf/json_enumvalue_options.proto
+ shake256:125b1879222a0a6fee18c67d6b7bc0dfc9805da3e47c766f371d745e3e19012eb17eca4d8afcc2951fd954b3ff73e2aa7188f5ef29780916702ba1402e1c1b55 google/protobuf/json_options.protoFiles changed content:
google/protobuf/descriptor.proto:
--- shake256:0a7d1f2ba306506998bb15d242deee55be625f8c1d9e564b3c066d9277b1fe22815f014137e6da39d09840e26e56f8b5f7d646164e8e0d4141e4d245aa6e7886 google/protobuf/descriptor.proto
+++ shake256:6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 google/protobuf/descriptor.proto
@@ -524,7 +524,14 @@
// Enables the use of arenas for the proto messages in this file. This applies
// only to generated classes for C++.
- optional bool cc_enable_arenas = 31 [default = true];
+ optional bool cc_enable_arenas = 31 [
+ default = true,
+ feature_support = {
+ edition_removed: EDITION_2026
+ removal_error: "cc_enable_arenas is enabled by default in every edition and overrides are ignored."
+ "This option is removed in editions 2026 and above."
+ }
+ ];
// Sets the objective c class prefix which is prepended to all objective c
// generated classes from this .proto. There is no default.
@@ -929,7 +936,11 @@
// Range reserved for first-class extension options defined by the Protobuf
// team. Custom options must use the 1000+ range instead.
- extensions 990 to 998;
+ extensions 990 to 998 [declaration = {
+ number: 998,
+ full_name: ".pb.enumvalue.json",
+ type: ".pb.enumvalue.JsonEnumValueOptions"
+ }];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
@@ -1168,7 +1179,7 @@
},
edition_defaults = { edition: EDITION_LEGACY, value: "STYLE_LEGACY" },
edition_defaults = { edition: EDITION_2024, value: "STYLE2024" },
- edition_defaults = { edition: EDITION_UNSTABLE, value: "STYLE2026" }
+ edition_defaults = { edition: EDITION_2026, value: "STYLE2026" }
];
message VisibilityFeature {
@@ -1199,9 +1210,41 @@
edition_introduced: EDITION_2024,
},
edition_defaults = { edition: EDITION_LEGACY, value: "EXPORT_ALL" },
- edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" }
+ edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" },
+ edition_defaults = { edition: EDITION_2026, value: "STRICT" }
];
+ message ProtoLimitsFeature {
+ enum EnforceProtoLimits {
+ PROTO_LIMITS_UNKNOWN = 0;
+
+ // Default pre-EDITION_2026: there are no limit enforcement at the protoc
+ // level. Practical limits still exist, but they will tend to fail while
+ // compiling protoc-generated code, and these limits tend to be language
+ // or toolchain specific.
+ LEGACY_NO_EXPLICIT_LIMITS = 1;
+
+ // A set of limits enforced by Edition 2026 by default. For a detailed
+ // list of all the limits please consult the Edition 2026 documentation.
+ PROTO_LIMITS2026 = 2;
+ }
+ }
+ optional ProtoLimitsFeature.EnforceProtoLimits enforce_proto_limits = 9 [
+ retention = RETENTION_SOURCE,
+ targets = TARGET_TYPE_ENUM,
+ targets = TARGET_TYPE_MESSAGE,
+ targets = TARGET_TYPE_FIELD,
+ targets = TARGET_TYPE_ONEOF,
+ feature_support = {
+ edition_introduced: EDITION_2026,
+ },
+ edition_defaults = {
+ edition: EDITION_LEGACY,
+ value: "LEGACY_NO_EXPLICIT_LIMITS"
+ },
+ edition_defaults = { edition: EDITION_2026, value: "PROTO_LIMITS2026" }
+ ];
+
reserved 999;
extensions 1000 to 9994 [
@@ -1353,6 +1396,23 @@
// [ 4, 3, 2, 7 ]
// this path refers to the whole field declaration (from the beginning
// of the label to the terminating semicolon).
+ //
+ // For options, the path refers to the interpreted option in the descriptor.
+ // E.g., for a custom option `(my_opt) = "foo"` on a message using extension
+ // number 10101, the path is:
+ // [ 4, 3, 7, 10101 ]
+ // refers to:
+ // file.message_type(3) // 4, 3
+ // .options() // 7
+ // .my_opt() // 10101
+ //
+ // Sub-locations corresponding to the interpreted option's corresponding
+ // `UninterpretedOption` are also appended to the interpreted option, which
+ // deviates from the actual FileDescriptorProto path. E.g.:
+ // [ 4, 3, 7, 10101, 2 ]
+ // refers to the option name `(my_opt)`, and:
+ // [ 4, 3, 7, 10101, 7 ]
+ // refers to the "foo" string value of the option.
repeated int32 path = 1 [packed = true];
// Always has exactly three or four elements: start line, start column,
google/protobuf/struct.proto:
--- shake256:b78f6252dbbc3395b4cb69c572dd88e239cec8b643a569cfa24960d4dd4b5e3e9c2d1d49290e2d4020284d7dc5184f080e26863c3bfc35c60ceebb3991e954f5 google/protobuf/struct.proto
+++ shake256:44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 google/protobuf/struct.proto
@@ -96,9 +96,9 @@
// the null value for the `Value` type union.
//
// A field of type `NullValue` with any value other than `0` is considered
-// invalid. Most ProtoJSON serializers will emit a Value with a `null_value` set
-// as a JSON `null` regardless of the integer value, and so will round trip to
-// a `0` value.
+// invalid. Most ProtoJSON serializers will emit a `Value` with a `null_value`
+// set as a JSON `null` regardless of the integer value, and so will round trip
+// to a `0` value.
enum NullValue {
// Null value.
NULL_VALUE = 0;
| { | ||
| "module_name": "protocolbuffers/wellknowntypes", | ||
| "latest_reference": "v35.1" | ||
| "latest_reference": "v36.0" |
There was a problem hiding this comment.
[Posted at 2026-08-21T17:01:07Z]
Overall transition
$ casdiff v35.1 \
v36.0 \
--format=markdown7 files changed: 0 removed, 0 renamed, 5 added, 2 changed content.
Files added:
+ shake256:4b1a042a089b54eacd4397204bb63b44d0accd04ecb9dce136e88036e2428066993ae9ac0ae4f087c3ca24ea3b77677b3dc9fffe6b61c5a675dfc3e463a054d6 google/protobuf/c_sharp_features.proto
+ shake256:f1f71bac409338411d51f63a531f528e76a5bf969189464eff89578145f8053f44d4ed6feee3dd27a539900277667fb4af52de4d6c5cb3bf0d0dd61b7ff83405 google/protobuf/cpp_file_options.proto
+ shake256:789d7e0602bc58e7b920080a702b416fbbebaabf797ca235930a2191c13a3c6ba0219af9589ee4bcdc40395016fbf1616840c63db5135f9d5538ce01670c4fe4 google/protobuf/cpp_options.proto
+ shake256:4c1e5d34bac0ace47b2d24778ce47f3bcf1c17dc41da25b3e8e314042d2c412fdd1e41d7053f099db7699ccf148ab6b32260d66d5b57e385fb60ccd5d9aab3a6 google/protobuf/json_enumvalue_options.proto
+ shake256:125b1879222a0a6fee18c67d6b7bc0dfc9805da3e47c766f371d745e3e19012eb17eca4d8afcc2951fd954b3ff73e2aa7188f5ef29780916702ba1402e1c1b55 google/protobuf/json_options.protoFiles changed content:
google/protobuf/descriptor.proto:
--- shake256:0a7d1f2ba306506998bb15d242deee55be625f8c1d9e564b3c066d9277b1fe22815f014137e6da39d09840e26e56f8b5f7d646164e8e0d4141e4d245aa6e7886 google/protobuf/descriptor.proto
+++ shake256:6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 google/protobuf/descriptor.proto
@@ -524,7 +524,14 @@
// Enables the use of arenas for the proto messages in this file. This applies
// only to generated classes for C++.
- optional bool cc_enable_arenas = 31 [default = true];
+ optional bool cc_enable_arenas = 31 [
+ default = true,
+ feature_support = {
+ edition_removed: EDITION_2026
+ removal_error: "cc_enable_arenas is enabled by default in every edition and overrides are ignored."
+ "This option is removed in editions 2026 and above."
+ }
+ ];
// Sets the objective c class prefix which is prepended to all objective c
// generated classes from this .proto. There is no default.
@@ -929,7 +936,11 @@
// Range reserved for first-class extension options defined by the Protobuf
// team. Custom options must use the 1000+ range instead.
- extensions 990 to 998;
+ extensions 990 to 998 [declaration = {
+ number: 998,
+ full_name: ".pb.enumvalue.json",
+ type: ".pb.enumvalue.JsonEnumValueOptions"
+ }];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
@@ -1168,7 +1179,7 @@
},
edition_defaults = { edition: EDITION_LEGACY, value: "STYLE_LEGACY" },
edition_defaults = { edition: EDITION_2024, value: "STYLE2024" },
- edition_defaults = { edition: EDITION_UNSTABLE, value: "STYLE2026" }
+ edition_defaults = { edition: EDITION_2026, value: "STYLE2026" }
];
message VisibilityFeature {
@@ -1199,9 +1210,41 @@
edition_introduced: EDITION_2024,
},
edition_defaults = { edition: EDITION_LEGACY, value: "EXPORT_ALL" },
- edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" }
+ edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" },
+ edition_defaults = { edition: EDITION_2026, value: "STRICT" }
];
+ message ProtoLimitsFeature {
+ enum EnforceProtoLimits {
+ PROTO_LIMITS_UNKNOWN = 0;
+
+ // Default pre-EDITION_2026: there are no limit enforcement at the protoc
+ // level. Practical limits still exist, but they will tend to fail while
+ // compiling protoc-generated code, and these limits tend to be language
+ // or toolchain specific.
+ LEGACY_NO_EXPLICIT_LIMITS = 1;
+
+ // A set of limits enforced by Edition 2026 by default. For a detailed
+ // list of all the limits please consult the Edition 2026 documentation.
+ PROTO_LIMITS2026 = 2;
+ }
+ }
+ optional ProtoLimitsFeature.EnforceProtoLimits enforce_proto_limits = 9 [
+ retention = RETENTION_SOURCE,
+ targets = TARGET_TYPE_ENUM,
+ targets = TARGET_TYPE_MESSAGE,
+ targets = TARGET_TYPE_FIELD,
+ targets = TARGET_TYPE_ONEOF,
+ feature_support = {
+ edition_introduced: EDITION_2026,
+ },
+ edition_defaults = {
+ edition: EDITION_LEGACY,
+ value: "LEGACY_NO_EXPLICIT_LIMITS"
+ },
+ edition_defaults = { edition: EDITION_2026, value: "PROTO_LIMITS2026" }
+ ];
+
reserved 999;
extensions 1000 to 9994 [
@@ -1353,6 +1396,23 @@
// [ 4, 3, 2, 7 ]
// this path refers to the whole field declaration (from the beginning
// of the label to the terminating semicolon).
+ //
+ // For options, the path refers to the interpreted option in the descriptor.
+ // E.g., for a custom option `(my_opt) = "foo"` on a message using extension
+ // number 10101, the path is:
+ // [ 4, 3, 7, 10101 ]
+ // refers to:
+ // file.message_type(3) // 4, 3
+ // .options() // 7
+ // .my_opt() // 10101
+ //
+ // Sub-locations corresponding to the interpreted option's corresponding
+ // `UninterpretedOption` are also appended to the interpreted option, which
+ // deviates from the actual FileDescriptorProto path. E.g.:
+ // [ 4, 3, 7, 10101, 2 ]
+ // refers to the option name `(my_opt)`, and:
+ // [ 4, 3, 7, 10101, 7 ]
+ // refers to the "foo" string value of the option.
repeated int32 path = 1 [packed = true];
// Always has exactly three or four elements: start line, start column,
google/protobuf/struct.proto:
--- shake256:b78f6252dbbc3395b4cb69c572dd88e239cec8b643a569cfa24960d4dd4b5e3e9c2d1d49290e2d4020284d7dc5184f080e26863c3bfc35c60ceebb3991e954f5 google/protobuf/struct.proto
+++ shake256:44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 google/protobuf/struct.proto
@@ -96,9 +96,9 @@
// the null value for the `Value` type union.
//
// A field of type `NullValue` with any value other than `0` is considered
-// invalid. Most ProtoJSON serializers will emit a Value with a `null_value` set
-// as a JSON `null` regardless of the integer value, and so will round trip to
-// a `0` value.
+// invalid. Most ProtoJSON serializers will emit a `Value` with a `null_value`
+// set as a JSON `null` regardless of the integer value, and so will round trip
+// to a `0` value.
enum NullValue {
// Null value.
NULL_VALUE = 0;
pkwarren
approved these changes
Aug 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.