grpc-tools 1.41.0 → 1.59.2

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/bin/x86-linux/google/protobuf/any.proto +7 -3
  3. data/bin/x86-linux/google/protobuf/api.proto +2 -3
  4. data/bin/x86-linux/google/protobuf/compiler/plugin.proto +12 -4
  5. data/bin/x86-linux/google/protobuf/descriptor.proto +274 -28
  6. data/bin/x86-linux/google/protobuf/duration.proto +1 -2
  7. data/bin/x86-linux/google/protobuf/empty.proto +1 -2
  8. data/bin/x86-linux/google/protobuf/field_mask.proto +1 -1
  9. data/bin/x86-linux/google/protobuf/source_context.proto +1 -1
  10. data/bin/x86-linux/google/protobuf/struct.proto +4 -4
  11. data/bin/x86-linux/google/protobuf/timestamp.proto +2 -5
  12. data/bin/x86-linux/google/protobuf/type.proto +7 -1
  13. data/bin/x86-linux/google/protobuf/wrappers.proto +2 -2
  14. data/bin/x86-linux/grpc_ruby_plugin +0 -0
  15. data/bin/x86-linux/protoc +0 -0
  16. data/bin/x86-windows/google/protobuf/any.proto +7 -3
  17. data/bin/x86-windows/google/protobuf/api.proto +2 -3
  18. data/bin/x86-windows/google/protobuf/compiler/plugin.proto +12 -4
  19. data/bin/x86-windows/google/protobuf/descriptor.proto +274 -28
  20. data/bin/x86-windows/google/protobuf/duration.proto +1 -2
  21. data/bin/x86-windows/google/protobuf/empty.proto +1 -2
  22. data/bin/x86-windows/google/protobuf/field_mask.proto +1 -1
  23. data/bin/x86-windows/google/protobuf/source_context.proto +1 -1
  24. data/bin/x86-windows/google/protobuf/struct.proto +4 -4
  25. data/bin/x86-windows/google/protobuf/timestamp.proto +2 -5
  26. data/bin/x86-windows/google/protobuf/type.proto +7 -1
  27. data/bin/x86-windows/google/protobuf/wrappers.proto +2 -2
  28. data/bin/x86-windows/grpc_ruby_plugin.exe +0 -0
  29. data/bin/x86-windows/protoc.exe +0 -0
  30. data/bin/x86_64-linux/google/protobuf/any.proto +7 -3
  31. data/bin/x86_64-linux/google/protobuf/api.proto +2 -3
  32. data/bin/x86_64-linux/google/protobuf/compiler/plugin.proto +12 -4
  33. data/bin/x86_64-linux/google/protobuf/descriptor.proto +274 -28
  34. data/bin/x86_64-linux/google/protobuf/duration.proto +1 -2
  35. data/bin/x86_64-linux/google/protobuf/empty.proto +1 -2
  36. data/bin/x86_64-linux/google/protobuf/field_mask.proto +1 -1
  37. data/bin/x86_64-linux/google/protobuf/source_context.proto +1 -1
  38. data/bin/x86_64-linux/google/protobuf/struct.proto +4 -4
  39. data/bin/x86_64-linux/google/protobuf/timestamp.proto +2 -5
  40. data/bin/x86_64-linux/google/protobuf/type.proto +7 -1
  41. data/bin/x86_64-linux/google/protobuf/wrappers.proto +2 -2
  42. data/bin/x86_64-linux/grpc_ruby_plugin +0 -0
  43. data/bin/x86_64-linux/protoc +0 -0
  44. data/bin/x86_64-macos/google/protobuf/any.proto +7 -3
  45. data/bin/x86_64-macos/google/protobuf/api.proto +2 -3
  46. data/bin/x86_64-macos/google/protobuf/compiler/plugin.proto +12 -4
  47. data/bin/x86_64-macos/google/protobuf/descriptor.proto +274 -28
  48. data/bin/x86_64-macos/google/protobuf/duration.proto +1 -2
  49. data/bin/x86_64-macos/google/protobuf/empty.proto +1 -2
  50. data/bin/x86_64-macos/google/protobuf/field_mask.proto +1 -1
  51. data/bin/x86_64-macos/google/protobuf/source_context.proto +1 -1
  52. data/bin/x86_64-macos/google/protobuf/struct.proto +4 -4
  53. data/bin/x86_64-macos/google/protobuf/timestamp.proto +2 -5
  54. data/bin/x86_64-macos/google/protobuf/type.proto +7 -1
  55. data/bin/x86_64-macos/google/protobuf/wrappers.proto +2 -2
  56. data/bin/x86_64-macos/grpc_ruby_plugin +0 -0
  57. data/bin/x86_64-macos/protoc +0 -0
  58. data/bin/x86_64-windows/google/protobuf/any.proto +7 -3
  59. data/bin/x86_64-windows/google/protobuf/api.proto +2 -3
  60. data/bin/x86_64-windows/google/protobuf/compiler/plugin.proto +12 -4
  61. data/bin/x86_64-windows/google/protobuf/descriptor.proto +274 -28
  62. data/bin/x86_64-windows/google/protobuf/duration.proto +1 -2
  63. data/bin/x86_64-windows/google/protobuf/empty.proto +1 -2
  64. data/bin/x86_64-windows/google/protobuf/field_mask.proto +1 -1
  65. data/bin/x86_64-windows/google/protobuf/source_context.proto +1 -1
  66. data/bin/x86_64-windows/google/protobuf/struct.proto +4 -4
  67. data/bin/x86_64-windows/google/protobuf/timestamp.proto +2 -5
  68. data/bin/x86_64-windows/google/protobuf/type.proto +7 -1
  69. data/bin/x86_64-windows/google/protobuf/wrappers.proto +2 -2
  70. data/bin/x86_64-windows/grpc_ruby_plugin.exe +0 -0
  71. data/bin/x86_64-windows/protoc.exe +0 -0
  72. data/platform_check.rb +1 -1
  73. data/version.rb +1 -1
  74. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c1fc468b966b9ff8a6288bcb76540d4920240bf8d42e612f42ab51c6eda863d
4
- data.tar.gz: 721c9dc650abefeeb168eda6fff286550089b9e13a4357cb9f45f1dc0b66e949
3
+ metadata.gz: 7328915ff0b816bede4daa67a18a798bba523115c7a94382eb0c88085094f6ba
4
+ data.tar.gz: 2c6443f491ab1447866e6044966f0350f55ca9e879bc771600623d393d636889
5
5
  SHA512:
6
- metadata.gz: f1f288fd9d2a63a65c6ff54798b4bef6c0a488294afb4abaaff49ed6559f954469c699c1d196ba4cfed85de6333c75f901c68b5c355d083a1b15de6fc50e9c2e
7
- data.tar.gz: 14c84f0907b76ba7ea3b3b60888762e5746f84c8d05aa1785e63a6a8aca0f024dd3d7e69f0d1dfedc2fa35f4a06e8d02144b2b16e0cdcbcbaa533c9e8dc69986
6
+ metadata.gz: c7b83fb4464db40d5392f003ee9bb14736215724e065cbe2582d186dc8b0af305a5a4cbe8ebd512d271f87330739e49f03c15c9dca67b7107cdae594591c17da
7
+ data.tar.gz: 75f97891f3487981a8de2bb11b8a1f982c30c0fa80629f59ee200dddb321556e3eda49fd6a275fc7fd56959c9c51e49376f6505da9d5e076ea9f85d3bf2bcc40
@@ -32,12 +32,12 @@ syntax = "proto3";
32
32
 
33
33
  package google.protobuf;
34
34
 
35
- option csharp_namespace = "Google.Protobuf.WellKnownTypes";
36
35
  option go_package = "google.golang.org/protobuf/types/known/anypb";
37
36
  option java_package = "com.google.protobuf";
38
37
  option java_outer_classname = "AnyProto";
39
38
  option java_multiple_files = true;
40
39
  option objc_class_prefix = "GPB";
40
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
41
41
 
42
42
  // `Any` contains an arbitrary serialized protocol buffer message along with a
43
43
  // URL that describes the type of the serialized message.
@@ -63,6 +63,10 @@ option objc_class_prefix = "GPB";
63
63
  // if (any.is(Foo.class)) {
64
64
  // foo = any.unpack(Foo.class);
65
65
  // }
66
+ // // or ...
67
+ // if (any.isSameTypeAs(Foo.getDefaultInstance())) {
68
+ // foo = any.unpack(Foo.getDefaultInstance());
69
+ // }
66
70
  //
67
71
  // Example 3: Pack and unpack a message in Python.
68
72
  //
@@ -93,7 +97,6 @@ option objc_class_prefix = "GPB";
93
97
  // in the type URL, for example "foo.bar.com/x/y.z" will yield type
94
98
  // name "y.z".
95
99
  //
96
- //
97
100
  // JSON
98
101
  // ====
99
102
  // The JSON representation of an `Any` value uses the regular
@@ -146,7 +149,8 @@ message Any {
146
149
  //
147
150
  // Note: this functionality is not currently available in the official
148
151
  // protobuf release, and it is not used for type URLs beginning with
149
- // type.googleapis.com.
152
+ // type.googleapis.com. As of May 2023, there are no widely used type server
153
+ // implementations and no plans to implement one.
150
154
  //
151
155
  // Schemes other than `http`, `https` (or the empty scheme) might be
152
156
  // used with implementation specific semantics.
@@ -35,11 +35,11 @@ package google.protobuf;
35
35
  import "google/protobuf/source_context.proto";
36
36
  import "google/protobuf/type.proto";
37
37
 
38
- option csharp_namespace = "Google.Protobuf.WellKnownTypes";
39
38
  option java_package = "com.google.protobuf";
40
39
  option java_outer_classname = "ApiProto";
41
40
  option java_multiple_files = true;
42
41
  option objc_class_prefix = "GPB";
42
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
43
43
  option go_package = "google.golang.org/protobuf/types/known/apipb";
44
44
 
45
45
  // Api is a light-weight descriptor for an API Interface.
@@ -82,7 +82,6 @@ message Api {
82
82
  // be omitted. Zero major versions must only be used for
83
83
  // experimental, non-GA interfaces.
84
84
  //
85
- //
86
85
  string version = 4;
87
86
 
88
87
  // Source context for the protocol buffer service represented by this
@@ -167,7 +166,7 @@ message Method {
167
166
  // The mixin construct implies that all methods in `AccessControl` are
168
167
  // also declared with same name and request/response types in
169
168
  // `Storage`. A documentation generator or annotation processor will
170
- // see the effective `Storage.GetAcl` method after inheriting
169
+ // see the effective `Storage.GetAcl` method after inherting
171
170
  // documentation and annotations as follows:
172
171
  //
173
172
  // service Storage {
@@ -30,9 +30,6 @@
30
30
 
31
31
  // Author: kenton@google.com (Kenton Varda)
32
32
  //
33
- // WARNING: The plugin interface is currently EXPERIMENTAL and is subject to
34
- // change.
35
- //
36
33
  // protoc (aka the Protocol Compiler) can be extended via plugins. A plugin is
37
34
  // just a program that reads a CodeGeneratorRequest from stdin and writes a
38
35
  // CodeGeneratorResponse to stdout.
@@ -50,6 +47,7 @@ package google.protobuf.compiler;
50
47
  option java_package = "com.google.protobuf.compiler";
51
48
  option java_outer_classname = "PluginProtos";
52
49
 
50
+ option csharp_namespace = "Google.Protobuf.Compiler";
53
51
  option go_package = "google.golang.org/protobuf/types/pluginpb";
54
52
 
55
53
  import "google/protobuf/descriptor.proto";
@@ -78,6 +76,11 @@ message CodeGeneratorRequest {
78
76
  // they import. The files will appear in topological order, so each file
79
77
  // appears before any file that imports it.
80
78
  //
79
+ // Note: the files listed in files_to_generate will include runtime-retention
80
+ // options only, but all other files will include source-retention options.
81
+ // The source_file_descriptors field below is available in case you need
82
+ // source-retention options for files_to_generate.
83
+ //
81
84
  // protoc guarantees that all proto_files will be written after
82
85
  // the fields above, even though this is not technically guaranteed by the
83
86
  // protobuf wire format. This theoretically could allow a plugin to stream
@@ -90,9 +93,13 @@ message CodeGeneratorRequest {
90
93
  // fully qualified.
91
94
  repeated FileDescriptorProto proto_file = 15;
92
95
 
96
+ // File descriptors with all options, including source-retention options.
97
+ // These descriptors are only provided for the files listed in
98
+ // files_to_generate.
99
+ repeated FileDescriptorProto source_file_descriptors = 17;
100
+
93
101
  // The version number of protocol compiler.
94
102
  optional Version compiler_version = 3;
95
-
96
103
  }
97
104
 
98
105
  // The plugin writes an encoded CodeGeneratorResponse to stdout.
@@ -115,6 +122,7 @@ message CodeGeneratorResponse {
115
122
  enum Feature {
116
123
  FEATURE_NONE = 0;
117
124
  FEATURE_PROTO3_OPTIONAL = 1;
125
+ FEATURE_SUPPORTS_EDITIONS = 2;
118
126
  }
119
127
 
120
128
  // Represents a single generated file.
@@ -36,7 +36,6 @@
36
36
  // A valid .proto file can be translated directly to a FileDescriptorProto
37
37
  // without any other information (e.g. without reading its imports).
38
38
 
39
-
40
39
  syntax = "proto2";
41
40
 
42
41
  package google.protobuf;
@@ -86,8 +85,13 @@ message FileDescriptorProto {
86
85
  optional SourceCodeInfo source_code_info = 9;
87
86
 
88
87
  // The syntax of the proto file.
89
- // The supported values are "proto2" and "proto3".
88
+ // The supported values are "proto2", "proto3", and "editions".
89
+ //
90
+ // If `edition` is present, this value must be "editions".
90
91
  optional string syntax = 12;
92
+
93
+ // The edition of the proto file, which is an opaque string.
94
+ optional string edition = 13;
91
95
  }
92
96
 
93
97
  // Describes a message type.
@@ -129,6 +133,50 @@ message ExtensionRangeOptions {
129
133
  // The parser stores options it doesn't recognize here. See above.
130
134
  repeated UninterpretedOption uninterpreted_option = 999;
131
135
 
136
+ message Declaration {
137
+ // The extension number declared within the extension range.
138
+ optional int32 number = 1;
139
+
140
+ // The fully-qualified name of the extension field. There must be a leading
141
+ // dot in front of the full name.
142
+ optional string full_name = 2;
143
+
144
+ // The fully-qualified type name of the extension field. Unlike
145
+ // Metadata.type, Declaration.type must have a leading dot for messages
146
+ // and enums.
147
+ optional string type = 3;
148
+
149
+ // If true, indicates that the number is reserved in the extension range,
150
+ // and any extension field with the number will fail to compile. Set this
151
+ // when a declared extension field is deleted.
152
+ optional bool reserved = 5;
153
+
154
+ // If true, indicates that the extension must be defined as repeated.
155
+ // Otherwise the extension must be defined as optional.
156
+ optional bool repeated = 6;
157
+
158
+ reserved 4; // removed is_repeated
159
+ }
160
+
161
+ // For external users: DO NOT USE. We are in the process of open sourcing
162
+ // extension declaration and executing internal cleanups before it can be
163
+ // used externally.
164
+ repeated Declaration declaration = 2 [retention = RETENTION_SOURCE];
165
+
166
+ // Any features defined in the specific edition.
167
+ optional FeatureSet features = 50;
168
+
169
+ // The verification state of the extension range.
170
+ enum VerificationState {
171
+ // All the extensions of the range must be declared.
172
+ DECLARATION = 0;
173
+ UNVERIFIED = 1;
174
+ }
175
+
176
+ // The verification state of the range.
177
+ // TODO(b/278783756): flip the default to DECLARATION once all empty ranges
178
+ // are marked as UNVERIFIED.
179
+ optional VerificationState verification = 3 [default = UNVERIFIED];
132
180
 
133
181
  // Clients can define custom options in extensions of this message. See above.
134
182
  extensions 1000 to max;
@@ -199,7 +247,6 @@ message FieldDescriptorProto {
199
247
  // For booleans, "true" or "false".
200
248
  // For strings, contains the default text contents (not escaped in any way).
201
249
  // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
202
- // TODO(kenton): Base-64 encode?
203
250
  optional string default_value = 7;
204
251
 
205
252
  // If set, gives the index of a oneof in the containing type's oneof_decl
@@ -306,7 +353,6 @@ message MethodDescriptorProto {
306
353
  optional bool server_streaming = 6 [default = false];
307
354
  }
308
355
 
309
-
310
356
  // ===================================================================
311
357
  // Options
312
358
 
@@ -347,7 +393,6 @@ message FileOptions {
347
393
  // domain names.
348
394
  optional string java_package = 1;
349
395
 
350
-
351
396
  // Controls the name of the wrapper Java class generated for the .proto file.
352
397
  // That class will always contain the .proto file's getDescriptor() method as
353
398
  // well as any top-level extensions defined in the .proto file.
@@ -374,7 +419,6 @@ message FileOptions {
374
419
  // This option has no effect on when used with the lite runtime.
375
420
  optional bool java_string_check_utf8 = 27 [default = false];
376
421
 
377
-
378
422
  // Generated classes can be optimized for speed or code size.
379
423
  enum OptimizeMode {
380
424
  SPEED = 1; // Generate complete code for parsing, serialization,
@@ -391,9 +435,6 @@ message FileOptions {
391
435
  // - Otherwise, the basename of the .proto file, without extension.
392
436
  optional string go_package = 11;
393
437
 
394
-
395
-
396
-
397
438
  // Should generic services be generated in each language? "Generic" services
398
439
  // are not specific to any particular RPC system. They are generated by the
399
440
  // main code generators in each language (without additional plugins).
@@ -419,7 +460,6 @@ message FileOptions {
419
460
  // only to generated classes for C++.
420
461
  optional bool cc_enable_arenas = 31 [default = true];
421
462
 
422
-
423
463
  // Sets the objective c class prefix which is prepended to all objective c
424
464
  // generated classes from this .proto. There is no default.
425
465
  optional string objc_class_prefix = 36;
@@ -452,6 +492,8 @@ message FileOptions {
452
492
  // determining the ruby package.
453
493
  optional string ruby_package = 45;
454
494
 
495
+ // Any features defined in the specific edition.
496
+ optional FeatureSet features = 50;
455
497
 
456
498
  // The parser stores options it doesn't recognize here.
457
499
  // See the documentation for the "Options" section above.
@@ -498,6 +540,10 @@ message MessageOptions {
498
540
 
499
541
  reserved 4, 5, 6;
500
542
 
543
+ // NOTE: Do not set the option in .proto files. Always use the maps syntax
544
+ // instead. The option should only be implicitly set by the proto compiler
545
+ // parser.
546
+ //
501
547
  // Whether the message is an automatically generated map entry type for the
502
548
  // maps field.
503
549
  //
@@ -515,15 +561,25 @@ message MessageOptions {
515
561
  // use a native map in the target language to hold the keys and values.
516
562
  // The reflection APIs in such implementations still need to work as
517
563
  // if the field is a repeated message field.
518
- //
519
- // NOTE: Do not set the option in .proto files. Always use the maps syntax
520
- // instead. The option should only be implicitly set by the proto compiler
521
- // parser.
522
564
  optional bool map_entry = 7;
523
565
 
524
566
  reserved 8; // javalite_serializable
525
567
  reserved 9; // javanano_as_lite
526
568
 
569
+ // Enable the legacy handling of JSON field name conflicts. This lowercases
570
+ // and strips underscored from the fields before comparison in proto3 only.
571
+ // The new behavior takes `json_name` into account and applies to proto2 as
572
+ // well.
573
+ //
574
+ // This should only be used as a temporary measure against broken builds due
575
+ // to the change in behavior for JSON field name conflicts.
576
+ //
577
+ // TODO(b/261750190) This is legacy behavior we plan to remove once downstream
578
+ // teams have had time to migrate.
579
+ optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
580
+
581
+ // Any features defined in the specific edition.
582
+ optional FeatureSet features = 12;
527
583
 
528
584
  // The parser stores options it doesn't recognize here. See above.
529
585
  repeated UninterpretedOption uninterpreted_option = 999;
@@ -535,13 +591,21 @@ message MessageOptions {
535
591
  message FieldOptions {
536
592
  // The ctype option instructs the C++ code generator to use a different
537
593
  // representation of the field than it normally would. See the specific
538
- // options below. This option is not yet implemented in the open source
539
- // release -- sorry, we'll try to include it in a future version!
594
+ // options below. This option is only implemented to support use of
595
+ // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
596
+ // type "bytes" in the open source release -- sorry, we'll try to include
597
+ // other types in a future version!
540
598
  optional CType ctype = 1 [default = STRING];
541
599
  enum CType {
542
600
  // Default mode.
543
601
  STRING = 0;
544
602
 
603
+ // The option [ctype=CORD] may be applied to a non-repeated field of type
604
+ // "bytes". It indicates that in C++, the data should be stored in a Cord
605
+ // instead of a string. For very large strings, this may reduce memory
606
+ // fragmentation. It may also allow better performance when parsing from a
607
+ // Cord, or when parsing with aliasing enabled, as the parsed Cord may then
608
+ // alias the original buffer.
545
609
  CORD = 1;
546
610
 
547
611
  STRING_PIECE = 2;
@@ -593,7 +657,6 @@ message FieldOptions {
593
657
  // call from multiple threads concurrently, while non-const methods continue
594
658
  // to require exclusive access.
595
659
  //
596
- //
597
660
  // Note that implementations may choose not to check required fields within
598
661
  // a lazy sub-message. That is, calling IsInitialized() on the outer message
599
662
  // may return true even if the inner message has missing required fields.
@@ -604,8 +667,16 @@ message FieldOptions {
604
667
  // implementation must either *always* check its required fields, or *never*
605
668
  // check its required fields, regardless of whether or not the message has
606
669
  // been parsed.
670
+ //
671
+ // As of May 2022, lazy verifies the contents of the byte stream during
672
+ // parsing. An invalid byte stream will cause the overall parsing to fail.
607
673
  optional bool lazy = 5 [default = false];
608
674
 
675
+ // unverified_lazy does no correctness checks on the byte stream. This should
676
+ // only be used where lazy with verification is prohibitive for performance
677
+ // reasons.
678
+ optional bool unverified_lazy = 15 [default = false];
679
+
609
680
  // Is this field deprecated?
610
681
  // Depending on the target platform, this can emit Deprecated annotations
611
682
  // for accessors, or it will be completely ignored; in the very least, this
@@ -615,6 +686,48 @@ message FieldOptions {
615
686
  // For Google-internal migration only. Do not use.
616
687
  optional bool weak = 10 [default = false];
617
688
 
689
+ // Indicate that the field value should not be printed out when using debug
690
+ // formats, e.g. when the field contains sensitive credentials.
691
+ optional bool debug_redact = 16 [default = false];
692
+
693
+ // If set to RETENTION_SOURCE, the option will be omitted from the binary.
694
+ // Note: as of January 2023, support for this is in progress and does not yet
695
+ // have an effect (b/264593489).
696
+ enum OptionRetention {
697
+ RETENTION_UNKNOWN = 0;
698
+ RETENTION_RUNTIME = 1;
699
+ RETENTION_SOURCE = 2;
700
+ }
701
+
702
+ optional OptionRetention retention = 17;
703
+
704
+ // This indicates the types of entities that the field may apply to when used
705
+ // as an option. If it is unset, then the field may be freely used as an
706
+ // option on any kind of entity. Note: as of January 2023, support for this is
707
+ // in progress and does not yet have an effect (b/264593489).
708
+ enum OptionTargetType {
709
+ TARGET_TYPE_UNKNOWN = 0;
710
+ TARGET_TYPE_FILE = 1;
711
+ TARGET_TYPE_EXTENSION_RANGE = 2;
712
+ TARGET_TYPE_MESSAGE = 3;
713
+ TARGET_TYPE_FIELD = 4;
714
+ TARGET_TYPE_ONEOF = 5;
715
+ TARGET_TYPE_ENUM = 6;
716
+ TARGET_TYPE_ENUM_ENTRY = 7;
717
+ TARGET_TYPE_SERVICE = 8;
718
+ TARGET_TYPE_METHOD = 9;
719
+ }
720
+
721
+ repeated OptionTargetType targets = 19;
722
+
723
+ message EditionDefault {
724
+ optional string edition = 1;
725
+ optional string value = 2; // Textproto value.
726
+ }
727
+ repeated EditionDefault edition_defaults = 20;
728
+
729
+ // Any features defined in the specific edition.
730
+ optional FeatureSet features = 21;
618
731
 
619
732
  // The parser stores options it doesn't recognize here. See above.
620
733
  repeated UninterpretedOption uninterpreted_option = 999;
@@ -622,10 +735,14 @@ message FieldOptions {
622
735
  // Clients can define custom options in extensions of this message. See above.
623
736
  extensions 1000 to max;
624
737
 
625
- reserved 4; // removed jtype
738
+ reserved 4; // removed jtype
739
+ reserved 18; // reserve target, target_obsolete_do_not_use
626
740
  }
627
741
 
628
742
  message OneofOptions {
743
+ // Any features defined in the specific edition.
744
+ optional FeatureSet features = 1;
745
+
629
746
  // The parser stores options it doesn't recognize here. See above.
630
747
  repeated UninterpretedOption uninterpreted_option = 999;
631
748
 
@@ -647,6 +764,17 @@ message EnumOptions {
647
764
 
648
765
  reserved 5; // javanano_as_lite
649
766
 
767
+ // Enable the legacy handling of JSON field name conflicts. This lowercases
768
+ // and strips underscored from the fields before comparison in proto3 only.
769
+ // The new behavior takes `json_name` into account and applies to proto2 as
770
+ // well.
771
+ // TODO(b/261750190) Remove this legacy behavior once downstream teams have
772
+ // had time to migrate.
773
+ optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
774
+
775
+ // Any features defined in the specific edition.
776
+ optional FeatureSet features = 7;
777
+
650
778
  // The parser stores options it doesn't recognize here. See above.
651
779
  repeated UninterpretedOption uninterpreted_option = 999;
652
780
 
@@ -661,6 +789,14 @@ message EnumValueOptions {
661
789
  // this is a formalization for deprecating enum values.
662
790
  optional bool deprecated = 1 [default = false];
663
791
 
792
+ // Any features defined in the specific edition.
793
+ optional FeatureSet features = 2;
794
+
795
+ // Indicate that fields annotated with this enum value should not be printed
796
+ // out when using debug formats, e.g. when the field contains sensitive
797
+ // credentials.
798
+ optional bool debug_redact = 3 [default = false];
799
+
664
800
  // The parser stores options it doesn't recognize here. See above.
665
801
  repeated UninterpretedOption uninterpreted_option = 999;
666
802
 
@@ -670,6 +806,9 @@ message EnumValueOptions {
670
806
 
671
807
  message ServiceOptions {
672
808
 
809
+ // Any features defined in the specific edition.
810
+ optional FeatureSet features = 34;
811
+
673
812
  // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
674
813
  // framework. We apologize for hoarding these numbers to ourselves, but
675
814
  // we were already using them long before we decided to release Protocol
@@ -712,6 +851,9 @@ message MethodOptions {
712
851
  optional IdempotencyLevel idempotency_level = 34
713
852
  [default = IDEMPOTENCY_UNKNOWN];
714
853
 
854
+ // Any features defined in the specific edition.
855
+ optional FeatureSet features = 35;
856
+
715
857
  // The parser stores options it doesn't recognize here. See above.
716
858
  repeated UninterpretedOption uninterpreted_option = 999;
717
859
 
@@ -719,7 +861,6 @@ message MethodOptions {
719
861
  extensions 1000 to max;
720
862
  }
721
863
 
722
-
723
864
  // A message representing a option the parser does not recognize. This only
724
865
  // appears in options protos created by the compiler::Parser class.
725
866
  // DescriptorPool resolves these when building Descriptor objects. Therefore,
@@ -730,8 +871,8 @@ message UninterpretedOption {
730
871
  // The name of the uninterpreted option. Each string represents a segment in
731
872
  // a dot-separated name. is_extension is true iff a segment represents an
732
873
  // extension (denoted with parentheses in options specs in .proto files).
733
- // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
734
- // "foo.(bar.baz).qux".
874
+ // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents
875
+ // "foo.(bar.baz).moo".
735
876
  message NamePart {
736
877
  required string name_part = 1;
737
878
  required bool is_extension = 2;
@@ -748,6 +889,99 @@ message UninterpretedOption {
748
889
  optional string aggregate_value = 8;
749
890
  }
750
891
 
892
+ // ===================================================================
893
+ // Features
894
+
895
+ // TODO(b/274655146) Enums in C++ gencode (and potentially other languages) are
896
+ // not well scoped. This means that each of the feature enums below can clash
897
+ // with each other. The short names we've chosen maximize call-site
898
+ // readability, but leave us very open to this scenario. A future feature will
899
+ // be designed and implemented to handle this, hopefully before we ever hit a
900
+ // conflict here.
901
+ message FeatureSet {
902
+ enum FieldPresence {
903
+ FIELD_PRESENCE_UNKNOWN = 0;
904
+ EXPLICIT = 1;
905
+ IMPLICIT = 2;
906
+ LEGACY_REQUIRED = 3;
907
+ }
908
+ optional FieldPresence field_presence = 1 [
909
+ retention = RETENTION_RUNTIME,
910
+ targets = TARGET_TYPE_FIELD,
911
+ targets = TARGET_TYPE_FILE,
912
+ edition_defaults = { edition: "2023", value: "EXPLICIT" }
913
+ ];
914
+
915
+ enum EnumType {
916
+ ENUM_TYPE_UNKNOWN = 0;
917
+ OPEN = 1;
918
+ CLOSED = 2;
919
+ }
920
+ optional EnumType enum_type = 2 [
921
+ retention = RETENTION_RUNTIME,
922
+ targets = TARGET_TYPE_ENUM,
923
+ targets = TARGET_TYPE_FILE,
924
+ edition_defaults = { edition: "2023", value: "OPEN" }
925
+ ];
926
+
927
+ enum RepeatedFieldEncoding {
928
+ REPEATED_FIELD_ENCODING_UNKNOWN = 0;
929
+ PACKED = 1;
930
+ EXPANDED = 2;
931
+ }
932
+ optional RepeatedFieldEncoding repeated_field_encoding = 3 [
933
+ retention = RETENTION_RUNTIME,
934
+ targets = TARGET_TYPE_FIELD,
935
+ targets = TARGET_TYPE_FILE,
936
+ edition_defaults = { edition: "2023", value: "PACKED" }
937
+ ];
938
+
939
+ enum StringFieldValidation {
940
+ STRING_FIELD_VALIDATION_UNKNOWN = 0;
941
+ MANDATORY = 1;
942
+ HINT = 2;
943
+ NONE = 3;
944
+ }
945
+ optional StringFieldValidation string_field_validation = 4 [
946
+ retention = RETENTION_RUNTIME,
947
+ targets = TARGET_TYPE_FIELD,
948
+ targets = TARGET_TYPE_FILE,
949
+ edition_defaults = { edition: "2023", value: "MANDATORY" }
950
+ ];
951
+
952
+ enum MessageEncoding {
953
+ MESSAGE_ENCODING_UNKNOWN = 0;
954
+ LENGTH_PREFIXED = 1;
955
+ DELIMITED = 2;
956
+ }
957
+ optional MessageEncoding message_encoding = 5 [
958
+ retention = RETENTION_RUNTIME,
959
+ targets = TARGET_TYPE_FIELD,
960
+ targets = TARGET_TYPE_FILE,
961
+ edition_defaults = { edition: "2023", value: "LENGTH_PREFIXED" }
962
+ ];
963
+
964
+ enum JsonFormat {
965
+ JSON_FORMAT_UNKNOWN = 0;
966
+ ALLOW = 1;
967
+ LEGACY_BEST_EFFORT = 2;
968
+ }
969
+ optional JsonFormat json_format = 6 [
970
+ retention = RETENTION_RUNTIME,
971
+ targets = TARGET_TYPE_MESSAGE,
972
+ targets = TARGET_TYPE_ENUM,
973
+ targets = TARGET_TYPE_FILE,
974
+ edition_defaults = { edition: "2023", value: "ALLOW" }
975
+ ];
976
+
977
+ optional FeatureSet raw_features = 999 [targets = TARGET_TYPE_UNKNOWN];
978
+
979
+ extensions 1000; // for Protobuf C++
980
+ extensions 1001; // for Protobuf Java
981
+
982
+ extensions 9995 to 9999; // For internal testing
983
+ }
984
+
751
985
  // ===================================================================
752
986
  // Optional source code info
753
987
 
@@ -803,8 +1037,8 @@ message SourceCodeInfo {
803
1037
  // location.
804
1038
  //
805
1039
  // Each element is a field number or an index. They form a path from
806
- // the root FileDescriptorProto to the place where the definition. For
807
- // example, this path:
1040
+ // the root FileDescriptorProto to the place where the definition occurs.
1041
+ // For example, this path:
808
1042
  // [ 4, 3, 2, 7, 1 ]
809
1043
  // refers to:
810
1044
  // file.message_type(3) // 4, 3
@@ -858,13 +1092,13 @@ message SourceCodeInfo {
858
1092
  // // Comment attached to baz.
859
1093
  // // Another line attached to baz.
860
1094
  //
861
- // // Comment attached to qux.
1095
+ // // Comment attached to moo.
862
1096
  // //
863
- // // Another line attached to qux.
864
- // optional double qux = 4;
1097
+ // // Another line attached to moo.
1098
+ // optional double moo = 4;
865
1099
  //
866
1100
  // // Detached comment for corge. This is not leading or trailing comments
867
- // // to qux or corge because there are blank lines separating it from
1101
+ // // to moo or corge because there are blank lines separating it from
868
1102
  // // both.
869
1103
  //
870
1104
  // // Detached comment for corge paragraph 2.
@@ -904,8 +1138,20 @@ message GeneratedCodeInfo {
904
1138
  optional int32 begin = 3;
905
1139
 
906
1140
  // Identifies the ending offset in bytes in the generated code that
907
- // relates to the identified offset. The end offset should be one past
1141
+ // relates to the identified object. The end offset should be one past
908
1142
  // the last relevant byte (so the length of the text = end - begin).
909
1143
  optional int32 end = 4;
1144
+
1145
+ // Represents the identified object's effect on the element in the original
1146
+ // .proto file.
1147
+ enum Semantic {
1148
+ // There is no effect or the effect is indescribable.
1149
+ NONE = 0;
1150
+ // The element is set or otherwise mutated.
1151
+ SET = 1;
1152
+ // An alias to the element is returned.
1153
+ ALIAS = 2;
1154
+ }
1155
+ optional Semantic semantic = 5;
910
1156
  }
911
1157
  }
@@ -32,13 +32,13 @@ syntax = "proto3";
32
32
 
33
33
  package google.protobuf;
34
34
 
35
- option csharp_namespace = "Google.Protobuf.WellKnownTypes";
36
35
  option cc_enable_arenas = true;
37
36
  option go_package = "google.golang.org/protobuf/types/known/durationpb";
38
37
  option java_package = "com.google.protobuf";
39
38
  option java_outer_classname = "DurationProto";
40
39
  option java_multiple_files = true;
41
40
  option objc_class_prefix = "GPB";
41
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
42
42
 
43
43
  // A Duration represents a signed, fixed-length span of time represented
44
44
  // as a count of seconds and fractions of seconds at nanosecond
@@ -99,7 +99,6 @@ option objc_class_prefix = "GPB";
99
99
  // be expressed in JSON format as "3.000000001s", and 3 seconds and 1
100
100
  // microsecond should be expressed in JSON format as "3.000001s".
101
101
  //
102
- //
103
102
  message Duration {
104
103
  // Signed seconds of the span of time. Must be from -315,576,000,000
105
104
  // to +315,576,000,000 inclusive. Note: these bounds are computed from:
@@ -32,12 +32,12 @@ syntax = "proto3";
32
32
 
33
33
  package google.protobuf;
34
34
 
35
- option csharp_namespace = "Google.Protobuf.WellKnownTypes";
36
35
  option go_package = "google.golang.org/protobuf/types/known/emptypb";
37
36
  option java_package = "com.google.protobuf";
38
37
  option java_outer_classname = "EmptyProto";
39
38
  option java_multiple_files = true;
40
39
  option objc_class_prefix = "GPB";
40
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
41
41
  option cc_enable_arenas = true;
42
42
 
43
43
  // A generic empty message that you can re-use to avoid defining duplicated
@@ -48,5 +48,4 @@ option cc_enable_arenas = true;
48
48
  // rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
49
49
  // }
50
50
  //
51
- // The JSON representation for `Empty` is empty JSON object `{}`.
52
51
  message Empty {}