grpc-tools 1.59.2 → 1.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
  //
@@ -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
  //