grpc-tools 1.59.2 → 1.60.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7328915ff0b816bede4daa67a18a798bba523115c7a94382eb0c88085094f6ba
4
- data.tar.gz: 2c6443f491ab1447866e6044966f0350f55ca9e879bc771600623d393d636889
3
+ metadata.gz: 2a60dd37a9c221c073c0003e490d539b0224650001e8f3fef3455b3ce2e552e2
4
+ data.tar.gz: 5028309eb666ddd7f1496e4d652aee9258faff445912402a23580ca74ad02a29
5
5
  SHA512:
6
- metadata.gz: c7b83fb4464db40d5392f003ee9bb14736215724e065cbe2582d186dc8b0af305a5a4cbe8ebd512d271f87330739e49f03c15c9dca67b7107cdae594591c17da
7
- data.tar.gz: 75f97891f3487981a8de2bb11b8a1f982c30c0fa80629f59ee200dddb321556e3eda49fd6a275fc7fd56959c9c51e49376f6505da9d5e076ea9f85d3bf2bcc40
6
+ metadata.gz: 813bdc00ab909a2b4f97b2d7a9b99d1c8b4821eaebd4bda9acbec82544c75174815e809bbb17a5c8f867f416474708a603125b1f8b120992555a139372b22d8f
7
+ data.tar.gz: bc5394522efd7914dad242951d6cd8f610ec508236bbbcd0c5e6e5965f9e32bb88d4a1eeb1c7decf5e88fc51bcd22314bc9f475248ec7b680b43c8115450393e
@@ -1,32 +1,9 @@
1
1
  // Protocol Buffers - Google's data interchange format
2
2
  // Copyright 2008 Google Inc. All rights reserved.
3
- // https://developers.google.com/protocol-buffers/
4
3
  //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted provided that the following conditions are
7
- // met:
8
- //
9
- // * Redistributions of source code must retain the above copyright
10
- // notice, this list of conditions and the following disclaimer.
11
- // * Redistributions in binary form must reproduce the above
12
- // copyright notice, this list of conditions and the following disclaimer
13
- // in the documentation and/or other materials provided with the
14
- // distribution.
15
- // * Neither the name of Google Inc. nor the names of its
16
- // contributors may be used to endorse or promote products derived from
17
- // this software without specific prior written permission.
18
- //
19
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4
+ // Use of this source code is governed by a BSD-style
5
+ // license that can be found in the LICENSE file or at
6
+ // https://developers.google.com/open-source/licenses/bsd
30
7
 
31
8
  // Author: kenton@google.com (Kenton Varda)
32
9
  //
@@ -57,6 +57,32 @@ message FileDescriptorSet {
57
57
  repeated FileDescriptorProto file = 1;
58
58
  }
59
59
 
60
+ // The full set of known editions.
61
+ enum Edition {
62
+ // A placeholder for an unknown edition value.
63
+ EDITION_UNKNOWN = 0;
64
+
65
+ // Legacy syntax "editions". These pre-date editions, but behave much like
66
+ // distinct editions. These can't be used to specify the edition of proto
67
+ // files, but feature definitions must supply proto2/proto3 defaults for
68
+ // backwards compatibility.
69
+ EDITION_PROTO2 = 998;
70
+ EDITION_PROTO3 = 999;
71
+
72
+ // Editions that have been released. The specific values are arbitrary and
73
+ // should not be depended on, but they will always be time-ordered for easy
74
+ // comparison.
75
+ EDITION_2023 = 1000;
76
+
77
+ // Placeholder editions for testing feature resolution. These should not be
78
+ // used or relyed on outside of tests.
79
+ EDITION_1_TEST_ONLY = 1;
80
+ EDITION_2_TEST_ONLY = 2;
81
+ EDITION_99997_TEST_ONLY = 99997;
82
+ EDITION_99998_TEST_ONLY = 99998;
83
+ EDITION_99999_TEST_ONLY = 99999;
84
+ }
85
+
60
86
  // Describes a complete .proto file.
61
87
  message FileDescriptorProto {
62
88
  optional string name = 1; // file name, relative to root of source tree
@@ -90,8 +116,8 @@ message FileDescriptorProto {
90
116
  // If `edition` is present, this value must be "editions".
91
117
  optional string syntax = 12;
92
118
 
93
- // The edition of the proto file, which is an opaque string.
94
- optional string edition = 13;
119
+ // The edition of the proto file.
120
+ optional Edition edition = 14;
95
121
  }
96
122
 
97
123
  // Describes a message type.
@@ -174,7 +200,7 @@ message ExtensionRangeOptions {
174
200
  }
175
201
 
176
202
  // The verification state of the range.
177
- // TODO(b/278783756): flip the default to DECLARATION once all empty ranges
203
+ // TODO: flip the default to DECLARATION once all empty ranges
178
204
  // are marked as UNVERIFIED.
179
205
  optional VerificationState verification = 3 [default = UNVERIFIED];
180
206
 
@@ -201,9 +227,10 @@ message FieldDescriptorProto {
201
227
  TYPE_BOOL = 8;
202
228
  TYPE_STRING = 9;
203
229
  // Tag-delimited aggregate.
204
- // Group type is deprecated and not supported in proto3. However, Proto3
230
+ // Group type is deprecated and not supported after google.protobuf. However, Proto3
205
231
  // implementations should still be able to parse the group wire format and
206
- // treat group fields as unknown fields.
232
+ // treat group fields as unknown fields. In Editions, the group wire format
233
+ // can be enabled via the `message_encoding` feature.
207
234
  TYPE_GROUP = 10;
208
235
  TYPE_MESSAGE = 11; // Length-delimited aggregate.
209
236
 
@@ -220,8 +247,11 @@ message FieldDescriptorProto {
220
247
  enum Label {
221
248
  // 0 is reserved for errors
222
249
  LABEL_OPTIONAL = 1;
223
- LABEL_REQUIRED = 2;
224
250
  LABEL_REPEATED = 3;
251
+ // The required label is only allowed in google.protobuf. In proto3 and Editions
252
+ // it's explicitly prohibited. In Editions, the `field_presence` feature
253
+ // can be used to get this behavior.
254
+ LABEL_REQUIRED = 2;
225
255
  }
226
256
 
227
257
  optional string name = 1;
@@ -574,7 +604,7 @@ message MessageOptions {
574
604
  // This should only be used as a temporary measure against broken builds due
575
605
  // to the change in behavior for JSON field name conflicts.
576
606
  //
577
- // TODO(b/261750190) This is legacy behavior we plan to remove once downstream
607
+ // TODO This is legacy behavior we plan to remove once downstream
578
608
  // teams have had time to migrate.
579
609
  optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
580
610
 
@@ -614,7 +644,9 @@ message FieldOptions {
614
644
  // a more efficient representation on the wire. Rather than repeatedly
615
645
  // writing the tag and type for each element, the entire array is encoded as
616
646
  // a single length-delimited blob. In proto3, only explicit setting it to
617
- // false will avoid using packed encoding.
647
+ // false will avoid using packed encoding. This option is prohibited in
648
+ // Editions, but the `repeated_field_encoding` feature can be used to control
649
+ // the behavior.
618
650
  optional bool packed = 2;
619
651
 
620
652
  // The jstype option determines the JavaScript type used for values of the
@@ -721,7 +753,7 @@ message FieldOptions {
721
753
  repeated OptionTargetType targets = 19;
722
754
 
723
755
  message EditionDefault {
724
- optional string edition = 1;
756
+ optional Edition edition = 3;
725
757
  optional string value = 2; // Textproto value.
726
758
  }
727
759
  repeated EditionDefault edition_defaults = 20;
@@ -768,7 +800,7 @@ message EnumOptions {
768
800
  // and strips underscored from the fields before comparison in proto3 only.
769
801
  // The new behavior takes `json_name` into account and applies to proto2 as
770
802
  // well.
771
- // TODO(b/261750190) Remove this legacy behavior once downstream teams have
803
+ // TODO Remove this legacy behavior once downstream teams have
772
804
  // had time to migrate.
773
805
  optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
774
806
 
@@ -892,7 +924,7 @@ message UninterpretedOption {
892
924
  // ===================================================================
893
925
  // Features
894
926
 
895
- // TODO(b/274655146) Enums in C++ gencode (and potentially other languages) are
927
+ // TODO Enums in C++ gencode (and potentially other languages) are
896
928
  // not well scoped. This means that each of the feature enums below can clash
897
929
  // with each other. The short names we've chosen maximize call-site
898
930
  // readability, but leave us very open to this scenario. A future feature will
@@ -909,7 +941,9 @@ message FeatureSet {
909
941
  retention = RETENTION_RUNTIME,
910
942
  targets = TARGET_TYPE_FIELD,
911
943
  targets = TARGET_TYPE_FILE,
912
- edition_defaults = { edition: "2023", value: "EXPLICIT" }
944
+ edition_defaults = { edition: EDITION_PROTO2, value: "EXPLICIT" },
945
+ edition_defaults = { edition: EDITION_PROTO3, value: "IMPLICIT" },
946
+ edition_defaults = { edition: EDITION_2023, value: "EXPLICIT" }
913
947
  ];
914
948
 
915
949
  enum EnumType {
@@ -921,7 +955,8 @@ message FeatureSet {
921
955
  retention = RETENTION_RUNTIME,
922
956
  targets = TARGET_TYPE_ENUM,
923
957
  targets = TARGET_TYPE_FILE,
924
- edition_defaults = { edition: "2023", value: "OPEN" }
958
+ edition_defaults = { edition: EDITION_PROTO2, value: "CLOSED" },
959
+ edition_defaults = { edition: EDITION_PROTO3, value: "OPEN" }
925
960
  ];
926
961
 
927
962
  enum RepeatedFieldEncoding {
@@ -933,20 +968,21 @@ message FeatureSet {
933
968
  retention = RETENTION_RUNTIME,
934
969
  targets = TARGET_TYPE_FIELD,
935
970
  targets = TARGET_TYPE_FILE,
936
- edition_defaults = { edition: "2023", value: "PACKED" }
971
+ edition_defaults = { edition: EDITION_PROTO2, value: "EXPANDED" },
972
+ edition_defaults = { edition: EDITION_PROTO3, value: "PACKED" }
937
973
  ];
938
974
 
939
- enum StringFieldValidation {
940
- STRING_FIELD_VALIDATION_UNKNOWN = 0;
941
- MANDATORY = 1;
942
- HINT = 2;
943
- NONE = 3;
975
+ enum Utf8Validation {
976
+ UTF8_VALIDATION_UNKNOWN = 0;
977
+ NONE = 1;
978
+ VERIFY = 2;
944
979
  }
945
- optional StringFieldValidation string_field_validation = 4 [
980
+ optional Utf8Validation utf8_validation = 4 [
946
981
  retention = RETENTION_RUNTIME,
947
982
  targets = TARGET_TYPE_FIELD,
948
983
  targets = TARGET_TYPE_FILE,
949
- edition_defaults = { edition: "2023", value: "MANDATORY" }
984
+ edition_defaults = { edition: EDITION_PROTO2, value: "NONE" },
985
+ edition_defaults = { edition: EDITION_PROTO3, value: "VERIFY" }
950
986
  ];
951
987
 
952
988
  enum MessageEncoding {
@@ -958,7 +994,7 @@ message FeatureSet {
958
994
  retention = RETENTION_RUNTIME,
959
995
  targets = TARGET_TYPE_FIELD,
960
996
  targets = TARGET_TYPE_FILE,
961
- edition_defaults = { edition: "2023", value: "LENGTH_PREFIXED" }
997
+ edition_defaults = { edition: EDITION_PROTO2, value: "LENGTH_PREFIXED" }
962
998
  ];
963
999
 
964
1000
  enum JsonFormat {
@@ -971,10 +1007,11 @@ message FeatureSet {
971
1007
  targets = TARGET_TYPE_MESSAGE,
972
1008
  targets = TARGET_TYPE_ENUM,
973
1009
  targets = TARGET_TYPE_FILE,
974
- edition_defaults = { edition: "2023", value: "ALLOW" }
1010
+ edition_defaults = { edition: EDITION_PROTO2, value: "LEGACY_BEST_EFFORT" },
1011
+ edition_defaults = { edition: EDITION_PROTO3, value: "ALLOW" }
975
1012
  ];
976
1013
 
977
- optional FeatureSet raw_features = 999 [targets = TARGET_TYPE_UNKNOWN];
1014
+ reserved 999;
978
1015
 
979
1016
  extensions 1000; // for Protobuf C++
980
1017
  extensions 1001; // for Protobuf Java
@@ -982,6 +1019,30 @@ message FeatureSet {
982
1019
  extensions 9995 to 9999; // For internal testing
983
1020
  }
984
1021
 
1022
+ // A compiled specification for the defaults of a set of features. These
1023
+ // messages are generated from FeatureSet extensions and can be used to seed
1024
+ // feature resolution. The resolution with this object becomes a simple search
1025
+ // for the closest matching edition, followed by proto merges.
1026
+ message FeatureSetDefaults {
1027
+ // A map from every known edition with a unique set of defaults to its
1028
+ // defaults. Not all editions may be contained here. For a given edition,
1029
+ // the defaults at the closest matching edition ordered at or before it should
1030
+ // be used. This field must be in strict ascending order by edition.
1031
+ message FeatureSetEditionDefault {
1032
+ optional Edition edition = 3;
1033
+ optional FeatureSet features = 2;
1034
+ }
1035
+ repeated FeatureSetEditionDefault defaults = 1;
1036
+
1037
+ // The minimum supported edition (inclusive) when this was constructed.
1038
+ // Editions before this will not have defaults.
1039
+ optional Edition minimum_edition = 4;
1040
+
1041
+ // The maximum known edition (inclusive) when this was constructed. Editions
1042
+ // after this will not have reliable defaults.
1043
+ optional Edition maximum_edition = 5;
1044
+ }
1045
+
985
1046
  // ===================================================================
986
1047
  // Optional source code info
987
1048
 
Binary file
data/bin/x86-linux/protoc CHANGED
Binary file
@@ -1,32 +1,9 @@
1
1
  // Protocol Buffers - Google's data interchange format
2
2
  // Copyright 2008 Google Inc. All rights reserved.
3
- // https://developers.google.com/protocol-buffers/
4
3
  //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted provided that the following conditions are
7
- // met:
8
- //
9
- // * Redistributions of source code must retain the above copyright
10
- // notice, this list of conditions and the following disclaimer.
11
- // * Redistributions in binary form must reproduce the above
12
- // copyright notice, this list of conditions and the following disclaimer
13
- // in the documentation and/or other materials provided with the
14
- // distribution.
15
- // * Neither the name of Google Inc. nor the names of its
16
- // contributors may be used to endorse or promote products derived from
17
- // this software without specific prior written permission.
18
- //
19
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4
+ // Use of this source code is governed by a BSD-style
5
+ // license that can be found in the LICENSE file or at
6
+ // https://developers.google.com/open-source/licenses/bsd
30
7
 
31
8
  // Author: kenton@google.com (Kenton Varda)
32
9
  //
@@ -57,6 +57,32 @@ message FileDescriptorSet {
57
57
  repeated FileDescriptorProto file = 1;
58
58
  }
59
59
 
60
+ // The full set of known editions.
61
+ enum Edition {
62
+ // A placeholder for an unknown edition value.
63
+ EDITION_UNKNOWN = 0;
64
+
65
+ // Legacy syntax "editions". These pre-date editions, but behave much like
66
+ // distinct editions. These can't be used to specify the edition of proto
67
+ // files, but feature definitions must supply proto2/proto3 defaults for
68
+ // backwards compatibility.
69
+ EDITION_PROTO2 = 998;
70
+ EDITION_PROTO3 = 999;
71
+
72
+ // Editions that have been released. The specific values are arbitrary and
73
+ // should not be depended on, but they will always be time-ordered for easy
74
+ // comparison.
75
+ EDITION_2023 = 1000;
76
+
77
+ // Placeholder editions for testing feature resolution. These should not be
78
+ // used or relyed on outside of tests.
79
+ EDITION_1_TEST_ONLY = 1;
80
+ EDITION_2_TEST_ONLY = 2;
81
+ EDITION_99997_TEST_ONLY = 99997;
82
+ EDITION_99998_TEST_ONLY = 99998;
83
+ EDITION_99999_TEST_ONLY = 99999;
84
+ }
85
+
60
86
  // Describes a complete .proto file.
61
87
  message FileDescriptorProto {
62
88
  optional string name = 1; // file name, relative to root of source tree
@@ -90,8 +116,8 @@ message FileDescriptorProto {
90
116
  // If `edition` is present, this value must be "editions".
91
117
  optional string syntax = 12;
92
118
 
93
- // The edition of the proto file, which is an opaque string.
94
- optional string edition = 13;
119
+ // The edition of the proto file.
120
+ optional Edition edition = 14;
95
121
  }
96
122
 
97
123
  // Describes a message type.
@@ -174,7 +200,7 @@ message ExtensionRangeOptions {
174
200
  }
175
201
 
176
202
  // The verification state of the range.
177
- // TODO(b/278783756): flip the default to DECLARATION once all empty ranges
203
+ // TODO: flip the default to DECLARATION once all empty ranges
178
204
  // are marked as UNVERIFIED.
179
205
  optional VerificationState verification = 3 [default = UNVERIFIED];
180
206
 
@@ -201,9 +227,10 @@ message FieldDescriptorProto {
201
227
  TYPE_BOOL = 8;
202
228
  TYPE_STRING = 9;
203
229
  // Tag-delimited aggregate.
204
- // Group type is deprecated and not supported in proto3. However, Proto3
230
+ // Group type is deprecated and not supported after google.protobuf. However, Proto3
205
231
  // implementations should still be able to parse the group wire format and
206
- // treat group fields as unknown fields.
232
+ // treat group fields as unknown fields. In Editions, the group wire format
233
+ // can be enabled via the `message_encoding` feature.
207
234
  TYPE_GROUP = 10;
208
235
  TYPE_MESSAGE = 11; // Length-delimited aggregate.
209
236
 
@@ -220,8 +247,11 @@ message FieldDescriptorProto {
220
247
  enum Label {
221
248
  // 0 is reserved for errors
222
249
  LABEL_OPTIONAL = 1;
223
- LABEL_REQUIRED = 2;
224
250
  LABEL_REPEATED = 3;
251
+ // The required label is only allowed in google.protobuf. In proto3 and Editions
252
+ // it's explicitly prohibited. In Editions, the `field_presence` feature
253
+ // can be used to get this behavior.
254
+ LABEL_REQUIRED = 2;
225
255
  }
226
256
 
227
257
  optional string name = 1;
@@ -574,7 +604,7 @@ message MessageOptions {
574
604
  // This should only be used as a temporary measure against broken builds due
575
605
  // to the change in behavior for JSON field name conflicts.
576
606
  //
577
- // TODO(b/261750190) This is legacy behavior we plan to remove once downstream
607
+ // TODO This is legacy behavior we plan to remove once downstream
578
608
  // teams have had time to migrate.
579
609
  optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
580
610
 
@@ -614,7 +644,9 @@ message FieldOptions {
614
644
  // a more efficient representation on the wire. Rather than repeatedly
615
645
  // writing the tag and type for each element, the entire array is encoded as
616
646
  // a single length-delimited blob. In proto3, only explicit setting it to
617
- // false will avoid using packed encoding.
647
+ // false will avoid using packed encoding. This option is prohibited in
648
+ // Editions, but the `repeated_field_encoding` feature can be used to control
649
+ // the behavior.
618
650
  optional bool packed = 2;
619
651
 
620
652
  // The jstype option determines the JavaScript type used for values of the
@@ -721,7 +753,7 @@ message FieldOptions {
721
753
  repeated OptionTargetType targets = 19;
722
754
 
723
755
  message EditionDefault {
724
- optional string edition = 1;
756
+ optional Edition edition = 3;
725
757
  optional string value = 2; // Textproto value.
726
758
  }
727
759
  repeated EditionDefault edition_defaults = 20;
@@ -768,7 +800,7 @@ message EnumOptions {
768
800
  // and strips underscored from the fields before comparison in proto3 only.
769
801
  // The new behavior takes `json_name` into account and applies to proto2 as
770
802
  // well.
771
- // TODO(b/261750190) Remove this legacy behavior once downstream teams have
803
+ // TODO Remove this legacy behavior once downstream teams have
772
804
  // had time to migrate.
773
805
  optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
774
806
 
@@ -892,7 +924,7 @@ message UninterpretedOption {
892
924
  // ===================================================================
893
925
  // Features
894
926
 
895
- // TODO(b/274655146) Enums in C++ gencode (and potentially other languages) are
927
+ // TODO Enums in C++ gencode (and potentially other languages) are
896
928
  // not well scoped. This means that each of the feature enums below can clash
897
929
  // with each other. The short names we've chosen maximize call-site
898
930
  // readability, but leave us very open to this scenario. A future feature will
@@ -909,7 +941,9 @@ message FeatureSet {
909
941
  retention = RETENTION_RUNTIME,
910
942
  targets = TARGET_TYPE_FIELD,
911
943
  targets = TARGET_TYPE_FILE,
912
- edition_defaults = { edition: "2023", value: "EXPLICIT" }
944
+ edition_defaults = { edition: EDITION_PROTO2, value: "EXPLICIT" },
945
+ edition_defaults = { edition: EDITION_PROTO3, value: "IMPLICIT" },
946
+ edition_defaults = { edition: EDITION_2023, value: "EXPLICIT" }
913
947
  ];
914
948
 
915
949
  enum EnumType {
@@ -921,7 +955,8 @@ message FeatureSet {
921
955
  retention = RETENTION_RUNTIME,
922
956
  targets = TARGET_TYPE_ENUM,
923
957
  targets = TARGET_TYPE_FILE,
924
- edition_defaults = { edition: "2023", value: "OPEN" }
958
+ edition_defaults = { edition: EDITION_PROTO2, value: "CLOSED" },
959
+ edition_defaults = { edition: EDITION_PROTO3, value: "OPEN" }
925
960
  ];
926
961
 
927
962
  enum RepeatedFieldEncoding {
@@ -933,20 +968,21 @@ message FeatureSet {
933
968
  retention = RETENTION_RUNTIME,
934
969
  targets = TARGET_TYPE_FIELD,
935
970
  targets = TARGET_TYPE_FILE,
936
- edition_defaults = { edition: "2023", value: "PACKED" }
971
+ edition_defaults = { edition: EDITION_PROTO2, value: "EXPANDED" },
972
+ edition_defaults = { edition: EDITION_PROTO3, value: "PACKED" }
937
973
  ];
938
974
 
939
- enum StringFieldValidation {
940
- STRING_FIELD_VALIDATION_UNKNOWN = 0;
941
- MANDATORY = 1;
942
- HINT = 2;
943
- NONE = 3;
975
+ enum Utf8Validation {
976
+ UTF8_VALIDATION_UNKNOWN = 0;
977
+ NONE = 1;
978
+ VERIFY = 2;
944
979
  }
945
- optional StringFieldValidation string_field_validation = 4 [
980
+ optional Utf8Validation utf8_validation = 4 [
946
981
  retention = RETENTION_RUNTIME,
947
982
  targets = TARGET_TYPE_FIELD,
948
983
  targets = TARGET_TYPE_FILE,
949
- edition_defaults = { edition: "2023", value: "MANDATORY" }
984
+ edition_defaults = { edition: EDITION_PROTO2, value: "NONE" },
985
+ edition_defaults = { edition: EDITION_PROTO3, value: "VERIFY" }
950
986
  ];
951
987
 
952
988
  enum MessageEncoding {
@@ -958,7 +994,7 @@ message FeatureSet {
958
994
  retention = RETENTION_RUNTIME,
959
995
  targets = TARGET_TYPE_FIELD,
960
996
  targets = TARGET_TYPE_FILE,
961
- edition_defaults = { edition: "2023", value: "LENGTH_PREFIXED" }
997
+ edition_defaults = { edition: EDITION_PROTO2, value: "LENGTH_PREFIXED" }
962
998
  ];
963
999
 
964
1000
  enum JsonFormat {
@@ -971,10 +1007,11 @@ message FeatureSet {
971
1007
  targets = TARGET_TYPE_MESSAGE,
972
1008
  targets = TARGET_TYPE_ENUM,
973
1009
  targets = TARGET_TYPE_FILE,
974
- edition_defaults = { edition: "2023", value: "ALLOW" }
1010
+ edition_defaults = { edition: EDITION_PROTO2, value: "LEGACY_BEST_EFFORT" },
1011
+ edition_defaults = { edition: EDITION_PROTO3, value: "ALLOW" }
975
1012
  ];
976
1013
 
977
- optional FeatureSet raw_features = 999 [targets = TARGET_TYPE_UNKNOWN];
1014
+ reserved 999;
978
1015
 
979
1016
  extensions 1000; // for Protobuf C++
980
1017
  extensions 1001; // for Protobuf Java
@@ -982,6 +1019,30 @@ message FeatureSet {
982
1019
  extensions 9995 to 9999; // For internal testing
983
1020
  }
984
1021
 
1022
+ // A compiled specification for the defaults of a set of features. These
1023
+ // messages are generated from FeatureSet extensions and can be used to seed
1024
+ // feature resolution. The resolution with this object becomes a simple search
1025
+ // for the closest matching edition, followed by proto merges.
1026
+ message FeatureSetDefaults {
1027
+ // A map from every known edition with a unique set of defaults to its
1028
+ // defaults. Not all editions may be contained here. For a given edition,
1029
+ // the defaults at the closest matching edition ordered at or before it should
1030
+ // be used. This field must be in strict ascending order by edition.
1031
+ message FeatureSetEditionDefault {
1032
+ optional Edition edition = 3;
1033
+ optional FeatureSet features = 2;
1034
+ }
1035
+ repeated FeatureSetEditionDefault defaults = 1;
1036
+
1037
+ // The minimum supported edition (inclusive) when this was constructed.
1038
+ // Editions before this will not have defaults.
1039
+ optional Edition minimum_edition = 4;
1040
+
1041
+ // The maximum known edition (inclusive) when this was constructed. Editions
1042
+ // after this will not have reliable defaults.
1043
+ optional Edition maximum_edition = 5;
1044
+ }
1045
+
985
1046
  // ===================================================================
986
1047
  // Optional source code info
987
1048
 
Binary file
Binary file
@@ -1,32 +1,9 @@
1
1
  // Protocol Buffers - Google's data interchange format
2
2
  // Copyright 2008 Google Inc. All rights reserved.
3
- // https://developers.google.com/protocol-buffers/
4
3
  //
5
- // Redistribution and use in source and binary forms, with or without
6
- // modification, are permitted provided that the following conditions are
7
- // met:
8
- //
9
- // * Redistributions of source code must retain the above copyright
10
- // notice, this list of conditions and the following disclaimer.
11
- // * Redistributions in binary form must reproduce the above
12
- // copyright notice, this list of conditions and the following disclaimer
13
- // in the documentation and/or other materials provided with the
14
- // distribution.
15
- // * Neither the name of Google Inc. nor the names of its
16
- // contributors may be used to endorse or promote products derived from
17
- // this software without specific prior written permission.
18
- //
19
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4
+ // Use of this source code is governed by a BSD-style
5
+ // license that can be found in the LICENSE file or at
6
+ // https://developers.google.com/open-source/licenses/bsd
30
7
 
31
8
  // Author: kenton@google.com (Kenton Varda)
32
9
  //