grpc-tools 1.65.2 → 1.82.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/bin/x86-linux/google/protobuf/any.proto +52 -108
  3. data/bin/x86-linux/google/protobuf/api.proto +24 -2
  4. data/bin/x86-linux/google/protobuf/compiler/plugin.proto +2 -2
  5. data/bin/x86-linux/google/protobuf/descriptor.proto +306 -53
  6. data/bin/x86-linux/google/protobuf/field_mask.proto +16 -18
  7. data/bin/x86-linux/google/protobuf/struct.proto +38 -22
  8. data/bin/x86-linux/google/protobuf/timestamp.proto +9 -8
  9. data/bin/x86-linux/google/protobuf/type.proto +24 -0
  10. data/bin/x86-linux/google/protobuf/wrappers.proto +38 -4
  11. data/bin/x86-linux/grpc_ruby_plugin +0 -0
  12. data/bin/x86-linux/protoc +0 -0
  13. data/bin/x86-windows/google/protobuf/any.proto +52 -108
  14. data/bin/x86-windows/google/protobuf/api.proto +24 -2
  15. data/bin/x86-windows/google/protobuf/compiler/plugin.proto +2 -2
  16. data/bin/x86-windows/google/protobuf/descriptor.proto +306 -53
  17. data/bin/x86-windows/google/protobuf/field_mask.proto +16 -18
  18. data/bin/x86-windows/google/protobuf/struct.proto +38 -22
  19. data/bin/x86-windows/google/protobuf/timestamp.proto +9 -8
  20. data/bin/x86-windows/google/protobuf/type.proto +24 -0
  21. data/bin/x86-windows/google/protobuf/wrappers.proto +38 -4
  22. data/bin/x86-windows/grpc_ruby_plugin.exe +0 -0
  23. data/bin/x86-windows/protoc.exe +0 -0
  24. data/bin/x86_64-linux/google/protobuf/any.proto +52 -108
  25. data/bin/x86_64-linux/google/protobuf/api.proto +24 -2
  26. data/bin/x86_64-linux/google/protobuf/compiler/plugin.proto +2 -2
  27. data/bin/x86_64-linux/google/protobuf/descriptor.proto +306 -53
  28. data/bin/x86_64-linux/google/protobuf/field_mask.proto +16 -18
  29. data/bin/x86_64-linux/google/protobuf/struct.proto +38 -22
  30. data/bin/x86_64-linux/google/protobuf/timestamp.proto +9 -8
  31. data/bin/x86_64-linux/google/protobuf/type.proto +24 -0
  32. data/bin/x86_64-linux/google/protobuf/wrappers.proto +38 -4
  33. data/bin/x86_64-linux/grpc_ruby_plugin +0 -0
  34. data/bin/x86_64-linux/protoc +0 -0
  35. data/bin/x86_64-macos/google/protobuf/any.proto +52 -108
  36. data/bin/x86_64-macos/google/protobuf/api.proto +24 -2
  37. data/bin/x86_64-macos/google/protobuf/compiler/plugin.proto +2 -2
  38. data/bin/x86_64-macos/google/protobuf/descriptor.proto +306 -53
  39. data/bin/x86_64-macos/google/protobuf/field_mask.proto +16 -18
  40. data/bin/x86_64-macos/google/protobuf/struct.proto +38 -22
  41. data/bin/x86_64-macos/google/protobuf/timestamp.proto +9 -8
  42. data/bin/x86_64-macos/google/protobuf/type.proto +24 -0
  43. data/bin/x86_64-macos/google/protobuf/wrappers.proto +38 -4
  44. data/bin/x86_64-macos/grpc_ruby_plugin +0 -0
  45. data/bin/x86_64-macos/protoc +0 -0
  46. data/bin/x86_64-windows/google/protobuf/any.proto +52 -108
  47. data/bin/x86_64-windows/google/protobuf/api.proto +24 -2
  48. data/bin/x86_64-windows/google/protobuf/compiler/plugin.proto +2 -2
  49. data/bin/x86_64-windows/google/protobuf/descriptor.proto +306 -53
  50. data/bin/x86_64-windows/google/protobuf/field_mask.proto +16 -18
  51. data/bin/x86_64-windows/google/protobuf/struct.proto +38 -22
  52. data/bin/x86_64-windows/google/protobuf/timestamp.proto +9 -8
  53. data/bin/x86_64-windows/google/protobuf/type.proto +24 -0
  54. data/bin/x86_64-windows/google/protobuf/wrappers.proto +38 -4
  55. data/bin/x86_64-windows/grpc_ruby_plugin.exe +0 -0
  56. data/bin/x86_64-windows/protoc.exe +0 -0
  57. data/version.rb +1 -1
  58. metadata +4 -4
@@ -1,32 +1,9 @@
1
1
  // Protocol Buffers - Google's data interchange format
2
- // Copyright 2008 Google Inc. All rights reserved.
3
- // https://developers.google.com/protocol-buffers/
2
+ // Copyright 2008 Google LLC. All rights reserved.
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
  // Based on original Protocol Buffers design by
@@ -55,6 +32,13 @@ option optimize_for = SPEED;
55
32
  // files it parses.
56
33
  message FileDescriptorSet {
57
34
  repeated FileDescriptorProto file = 1;
35
+
36
+ // Extensions for tooling.
37
+ extensions 536000000 [declaration = {
38
+ number: 536000000
39
+ type: ".buf.descriptor.v1.FileDescriptorSetExtension"
40
+ full_name: ".buf.descriptor.v1.buf_file_descriptor_set_extension"
41
+ }];
58
42
  }
59
43
 
60
44
  // The full set of known editions.
@@ -62,6 +46,10 @@ enum Edition {
62
46
  // A placeholder for an unknown edition value.
63
47
  EDITION_UNKNOWN = 0;
64
48
 
49
+ // A placeholder edition for specifying default behaviors *before* a feature
50
+ // was first introduced. This is effectively an "infinite past".
51
+ EDITION_LEGACY = 900;
52
+
65
53
  // Legacy syntax "editions". These pre-date editions, but behave much like
66
54
  // distinct editions. These can't be used to specify the edition of proto
67
55
  // files, but feature definitions must supply proto2/proto3 defaults for
@@ -74,9 +62,13 @@ enum Edition {
74
62
  // comparison.
75
63
  EDITION_2023 = 1000;
76
64
  EDITION_2024 = 1001;
65
+ EDITION_2026 = 1002;
66
+
67
+ // A placeholder edition for developing and testing unscheduled features.
68
+ EDITION_UNSTABLE = 9999;
77
69
 
78
70
  // Placeholder editions for testing feature resolution. These should not be
79
- // used or relyed on outside of tests.
71
+ // used or relied on outside of tests.
80
72
  EDITION_1_TEST_ONLY = 1;
81
73
  EDITION_2_TEST_ONLY = 2;
82
74
  EDITION_99997_TEST_ONLY = 99997;
@@ -102,6 +94,10 @@ message FileDescriptorProto {
102
94
  // For Google-internal migration only. Do not use.
103
95
  repeated int32 weak_dependency = 11;
104
96
 
97
+ // Names of files imported by this file purely for the purpose of providing
98
+ // option extensions. These are excluded from the dependency list above.
99
+ repeated string option_dependency = 15;
100
+
105
101
  // All top-level definitions in this file.
106
102
  repeated DescriptorProto message_type = 4;
107
103
  repeated EnumDescriptorProto enum_type = 5;
@@ -120,9 +116,15 @@ message FileDescriptorProto {
120
116
  // The supported values are "proto2", "proto3", and "editions".
121
117
  //
122
118
  // If `edition` is present, this value must be "editions".
119
+ // WARNING: This field should only be used by protobuf plugins or special
120
+ // cases like the proto compiler. Other uses are discouraged and
121
+ // developers should rely on the protoreflect APIs for their client language.
123
122
  optional string syntax = 12;
124
123
 
125
124
  // The edition of the proto file.
125
+ // WARNING: This field should only be used by protobuf plugins or special
126
+ // cases like the proto compiler. Other uses are discouraged and
127
+ // developers should rely on the protoreflect APIs for their client language.
126
128
  optional Edition edition = 14;
127
129
  }
128
130
 
@@ -159,9 +161,15 @@ message DescriptorProto {
159
161
  // Reserved field names, which may not be used by fields in the same message.
160
162
  // A given name may only be reserved once.
161
163
  repeated string reserved_name = 10;
164
+
165
+ // Support for `export` and `local` keywords on enums.
166
+ optional SymbolVisibility visibility = 11;
162
167
  }
163
168
 
164
169
  message ExtensionRangeOptions {
170
+ // Range reserved for first-class custom options defined by the Protobuf
171
+ // team. User custom options must use the 1000+ range instead.
172
+ extensions 990 to 998;
165
173
  // The parser stores options it doesn't recognize here. See above.
166
174
  repeated UninterpretedOption uninterpreted_option = 999;
167
175
 
@@ -355,6 +363,9 @@ message EnumDescriptorProto {
355
363
  // Reserved enum value names, which may not be reused. A given name may only
356
364
  // be reserved once.
357
365
  repeated string reserved_name = 5;
366
+
367
+ // Support for `export` and `local` keywords on enums.
368
+ optional SymbolVisibility visibility = 6;
358
369
  }
359
370
 
360
371
  // Describes a value within an enum.
@@ -371,6 +382,9 @@ message ServiceDescriptorProto {
371
382
  repeated MethodDescriptorProto method = 2;
372
383
 
373
384
  optional ServiceOptions options = 3;
385
+
386
+ reserved 4;
387
+ reserved "stream";
374
388
  }
375
389
 
376
390
  // Describes a method of a service.
@@ -443,17 +457,31 @@ message FileOptions {
443
457
  // named by java_outer_classname. However, the wrapper class will still be
444
458
  // generated to contain the file's getDescriptor() method as well as any
445
459
  // top-level extensions defined in the file.
446
- optional bool java_multiple_files = 10 [default = false];
460
+ optional bool java_multiple_files = 10 [
461
+ default = false,
462
+ feature_support = {
463
+ edition_introduced: EDITION_PROTO2
464
+ edition_removed: EDITION_2024
465
+ removal_error: "This behavior is enabled by default in editions 2024 and above. "
466
+ "To disable it, you can set `features.(pb.java).nest_in_file_class = YES` "
467
+ "on individual messages, enums, or services."
468
+
469
+ }
470
+ ];
447
471
 
448
472
  // This option does nothing.
449
473
  optional bool java_generate_equals_and_hash = 20 [deprecated=true];
450
474
 
451
- // If set true, then the Java2 code generator will generate code that
452
- // throws an exception whenever an attempt is made to assign a non-UTF-8
453
- // byte sequence to a string field.
454
- // Message reflection will do the same.
455
- // However, an extension field still accepts non-UTF-8 byte sequences.
456
- // This option has no effect on when used with the lite runtime.
475
+ // A proto2 file can set this to true to opt in to UTF-8 checking for Java,
476
+ // which will throw an exception if invalid UTF-8 is parsed from the wire or
477
+ // assigned to a string field.
478
+ //
479
+ // TODO: clarify exactly what kinds of field types this option
480
+ // applies to, and update these docs accordingly.
481
+ //
482
+ // Proto3 files already perform these checks. Setting the option explicitly to
483
+ // false has no effect: it cannot be used to opt proto3 files out of UTF-8
484
+ // checks.
457
485
  optional bool java_string_check_utf8 = 27 [default = false];
458
486
 
459
487
  // Generated classes can be optimized for speed or code size.
@@ -486,6 +514,7 @@ message FileOptions {
486
514
  optional bool java_generic_services = 17 [default = false];
487
515
  optional bool py_generic_services = 18 [default = false];
488
516
  reserved 42; // removed php_generic_services
517
+ reserved "php_generic_services";
489
518
 
490
519
  // Is this file deprecated?
491
520
  // Depending on the target platform, this can emit Deprecated annotations
@@ -530,8 +559,19 @@ message FileOptions {
530
559
  optional string ruby_package = 45;
531
560
 
532
561
  // Any features defined in the specific edition.
562
+ // WARNING: This field should only be used by protobuf plugins or special
563
+ // cases like the proto compiler. Other uses are discouraged and
564
+ // developers should rely on the protoreflect APIs for their client language.
533
565
  optional FeatureSet features = 50;
534
566
 
567
+ // Range reserved for first-class custom options defined by the Protobuf
568
+ // team. User custom options must use the 1000+ range instead.
569
+ extensions 990 to 998 [declaration = {
570
+ number: 990,
571
+ full_name: ".pb.file.cpp",
572
+ type: ".pb.file.CppFileOptions"
573
+ }];
574
+
535
575
  // The parser stores options it doesn't recognize here.
536
576
  // See the documentation for the "Options" section above.
537
577
  repeated UninterpretedOption uninterpreted_option = 999;
@@ -616,8 +656,15 @@ message MessageOptions {
616
656
  optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
617
657
 
618
658
  // Any features defined in the specific edition.
659
+ // WARNING: This field should only be used by protobuf plugins or special
660
+ // cases like the proto compiler. Other uses are discouraged and
661
+ // developers should rely on the protoreflect APIs for their client language.
619
662
  optional FeatureSet features = 12;
620
663
 
664
+ // Range reserved for first-class custom options defined by the Protobuf
665
+ // team. User custom options must use the 1000+ range instead.
666
+ extensions 990 to 998;
667
+
621
668
  // The parser stores options it doesn't recognize here. See above.
622
669
  repeated UninterpretedOption uninterpreted_option = 999;
623
670
 
@@ -626,13 +673,14 @@ message MessageOptions {
626
673
  }
627
674
 
628
675
  message FieldOptions {
676
+ // NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead.
629
677
  // The ctype option instructs the C++ code generator to use a different
630
678
  // representation of the field than it normally would. See the specific
631
679
  // options below. This option is only implemented to support use of
632
680
  // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
633
- // type "bytes" in the open source release -- sorry, we'll try to include
634
- // other types in a future version!
635
- optional CType ctype = 1 [default = STRING];
681
+ // type "bytes" in the open source release.
682
+ // TODO: make ctype actually deprecated.
683
+ optional CType ctype = 1 [/*deprecated = true,*/ default = STRING];
636
684
  enum CType {
637
685
  // Default mode.
638
686
  STRING = 0;
@@ -714,16 +762,15 @@ message FieldOptions {
714
762
  // is a formalization for deprecating fields.
715
763
  optional bool deprecated = 3 [default = false];
716
764
 
765
+ // DEPRECATED. DO NOT USE!
717
766
  // For Google-internal migration only. Do not use.
718
- optional bool weak = 10 [default = false];
767
+ optional bool weak = 10 [default = false, deprecated = true];
719
768
 
720
769
  // Indicate that the field value should not be printed out when using debug
721
770
  // formats, e.g. when the field contains sensitive credentials.
722
771
  optional bool debug_redact = 16 [default = false];
723
772
 
724
773
  // If set to RETENTION_SOURCE, the option will be omitted from the binary.
725
- // Note: as of January 2023, support for this is in progress and does not yet
726
- // have an effect (b/264593489).
727
774
  enum OptionRetention {
728
775
  RETENTION_UNKNOWN = 0;
729
776
  RETENTION_RUNTIME = 1;
@@ -734,8 +781,7 @@ message FieldOptions {
734
781
 
735
782
  // This indicates the types of entities that the field may apply to when used
736
783
  // as an option. If it is unset, then the field may be freely used as an
737
- // option on any kind of entity. Note: as of January 2023, support for this is
738
- // in progress and does not yet have an effect (b/264593489).
784
+ // option on any kind of entity.
739
785
  enum OptionTargetType {
740
786
  TARGET_TYPE_UNKNOWN = 0;
741
787
  TARGET_TYPE_FILE = 1;
@@ -758,8 +804,41 @@ message FieldOptions {
758
804
  repeated EditionDefault edition_defaults = 20;
759
805
 
760
806
  // Any features defined in the specific edition.
807
+ // WARNING: This field should only be used by protobuf plugins or special
808
+ // cases like the proto compiler. Other uses are discouraged and
809
+ // developers should rely on the protoreflect APIs for their client language.
761
810
  optional FeatureSet features = 21;
762
811
 
812
+ // Information about the support window of a feature.
813
+ message FeatureSupport {
814
+ // The edition that this feature was first available in. In editions
815
+ // earlier than this one, the default assigned to EDITION_LEGACY will be
816
+ // used, and proto files will not be able to override it.
817
+ optional Edition edition_introduced = 1;
818
+
819
+ // The edition this feature becomes deprecated in. Using this after this
820
+ // edition may trigger warnings.
821
+ optional Edition edition_deprecated = 2;
822
+
823
+ // The deprecation warning text if this feature is used after the edition it
824
+ // was marked deprecated in.
825
+ optional string deprecation_warning = 3;
826
+
827
+ // The edition this feature is no longer available in. In editions after
828
+ // this one, the last default assigned will be used, and proto files will
829
+ // not be able to override it.
830
+ optional Edition edition_removed = 4;
831
+
832
+ // The removal error text if this feature is used after the edition it was
833
+ // removed in.
834
+ optional string removal_error = 5;
835
+ }
836
+ optional FeatureSupport feature_support = 22;
837
+
838
+ // Range reserved for first-class custom options defined by the Protobuf
839
+ // team. User custom options must use the 1000+ range instead.
840
+ extensions 990 to 998;
841
+
763
842
  // The parser stores options it doesn't recognize here. See above.
764
843
  repeated UninterpretedOption uninterpreted_option = 999;
765
844
 
@@ -772,8 +851,15 @@ message FieldOptions {
772
851
 
773
852
  message OneofOptions {
774
853
  // Any features defined in the specific edition.
854
+ // WARNING: This field should only be used by protobuf plugins or special
855
+ // cases like the proto compiler. Other uses are discouraged and
856
+ // developers should rely on the protoreflect APIs for their client language.
775
857
  optional FeatureSet features = 1;
776
858
 
859
+ // Range reserved for first-class custom options defined by the Protobuf
860
+ // team. User custom options must use the 1000+ range instead.
861
+ extensions 990 to 998;
862
+
777
863
  // The parser stores options it doesn't recognize here. See above.
778
864
  repeated UninterpretedOption uninterpreted_option = 999;
779
865
 
@@ -804,8 +890,15 @@ message EnumOptions {
804
890
  optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
805
891
 
806
892
  // Any features defined in the specific edition.
893
+ // WARNING: This field should only be used by protobuf plugins or special
894
+ // cases like the proto compiler. Other uses are discouraged and
895
+ // developers should rely on the protoreflect APIs for their client language.
807
896
  optional FeatureSet features = 7;
808
897
 
898
+ // Range reserved for first-class custom options defined by the Protobuf
899
+ // team. User custom options must use the 1000+ range instead.
900
+ extensions 990 to 998;
901
+
809
902
  // The parser stores options it doesn't recognize here. See above.
810
903
  repeated UninterpretedOption uninterpreted_option = 999;
811
904
 
@@ -821,6 +914,9 @@ message EnumValueOptions {
821
914
  optional bool deprecated = 1 [default = false];
822
915
 
823
916
  // Any features defined in the specific edition.
917
+ // WARNING: This field should only be used by protobuf plugins or special
918
+ // cases like the proto compiler. Other uses are discouraged and
919
+ // developers should rely on the protoreflect APIs for their client language.
824
920
  optional FeatureSet features = 2;
825
921
 
826
922
  // Indicate that fields annotated with this enum value should not be printed
@@ -828,6 +924,13 @@ message EnumValueOptions {
828
924
  // credentials.
829
925
  optional bool debug_redact = 3 [default = false];
830
926
 
927
+ // Information about the support window of a feature value.
928
+ optional FieldOptions.FeatureSupport feature_support = 4;
929
+
930
+ // Range reserved for first-class extension options defined by the Protobuf
931
+ // team. Custom options must use the 1000+ range instead.
932
+ extensions 990 to 998;
933
+
831
934
  // The parser stores options it doesn't recognize here. See above.
832
935
  repeated UninterpretedOption uninterpreted_option = 999;
833
936
 
@@ -838,6 +941,9 @@ message EnumValueOptions {
838
941
  message ServiceOptions {
839
942
 
840
943
  // Any features defined in the specific edition.
944
+ // WARNING: This field should only be used by protobuf plugins or special
945
+ // cases like the proto compiler. Other uses are discouraged and
946
+ // developers should rely on the protoreflect APIs for their client language.
841
947
  optional FeatureSet features = 34;
842
948
 
843
949
  // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
@@ -851,6 +957,10 @@ message ServiceOptions {
851
957
  // this is a formalization for deprecating services.
852
958
  optional bool deprecated = 33 [default = false];
853
959
 
960
+ // Range reserved for first-class custom options defined by the Protobuf
961
+ // team. User custom options must use the 1000+ range instead.
962
+ extensions 990 to 998;
963
+
854
964
  // The parser stores options it doesn't recognize here. See above.
855
965
  repeated UninterpretedOption uninterpreted_option = 999;
856
966
 
@@ -883,8 +993,15 @@ message MethodOptions {
883
993
  [default = IDEMPOTENCY_UNKNOWN];
884
994
 
885
995
  // Any features defined in the specific edition.
996
+ // WARNING: This field should only be used by protobuf plugins or special
997
+ // cases like the proto compiler. Other uses are discouraged and
998
+ // developers should rely on the protoreflect APIs for their client language.
886
999
  optional FeatureSet features = 35;
887
1000
 
1001
+ // Range reserved for first-class custom options defined by the Protobuf
1002
+ // team. User custom options must use the 1000+ range instead.
1003
+ extensions 990 to 998;
1004
+
888
1005
  // The parser stores options it doesn't recognize here. See above.
889
1006
  repeated UninterpretedOption uninterpreted_option = 999;
890
1007
 
@@ -940,7 +1057,10 @@ message FeatureSet {
940
1057
  retention = RETENTION_RUNTIME,
941
1058
  targets = TARGET_TYPE_FIELD,
942
1059
  targets = TARGET_TYPE_FILE,
943
- edition_defaults = { edition: EDITION_PROTO2, value: "EXPLICIT" },
1060
+ feature_support = {
1061
+ edition_introduced: EDITION_2023,
1062
+ },
1063
+ edition_defaults = { edition: EDITION_LEGACY, value: "EXPLICIT" },
944
1064
  edition_defaults = { edition: EDITION_PROTO3, value: "IMPLICIT" },
945
1065
  edition_defaults = { edition: EDITION_2023, value: "EXPLICIT" }
946
1066
  ];
@@ -954,7 +1074,10 @@ message FeatureSet {
954
1074
  retention = RETENTION_RUNTIME,
955
1075
  targets = TARGET_TYPE_ENUM,
956
1076
  targets = TARGET_TYPE_FILE,
957
- edition_defaults = { edition: EDITION_PROTO2, value: "CLOSED" },
1077
+ feature_support = {
1078
+ edition_introduced: EDITION_2023,
1079
+ },
1080
+ edition_defaults = { edition: EDITION_LEGACY, value: "CLOSED" },
958
1081
  edition_defaults = { edition: EDITION_PROTO3, value: "OPEN" }
959
1082
  ];
960
1083
 
@@ -967,7 +1090,10 @@ message FeatureSet {
967
1090
  retention = RETENTION_RUNTIME,
968
1091
  targets = TARGET_TYPE_FIELD,
969
1092
  targets = TARGET_TYPE_FILE,
970
- edition_defaults = { edition: EDITION_PROTO2, value: "EXPANDED" },
1093
+ feature_support = {
1094
+ edition_introduced: EDITION_2023,
1095
+ },
1096
+ edition_defaults = { edition: EDITION_LEGACY, value: "EXPANDED" },
971
1097
  edition_defaults = { edition: EDITION_PROTO3, value: "PACKED" }
972
1098
  ];
973
1099
 
@@ -975,12 +1101,16 @@ message FeatureSet {
975
1101
  UTF8_VALIDATION_UNKNOWN = 0;
976
1102
  VERIFY = 2;
977
1103
  NONE = 3;
1104
+ reserved 1;
978
1105
  }
979
1106
  optional Utf8Validation utf8_validation = 4 [
980
1107
  retention = RETENTION_RUNTIME,
981
1108
  targets = TARGET_TYPE_FIELD,
982
1109
  targets = TARGET_TYPE_FILE,
983
- edition_defaults = { edition: EDITION_PROTO2, value: "NONE" },
1110
+ feature_support = {
1111
+ edition_introduced: EDITION_2023,
1112
+ },
1113
+ edition_defaults = { edition: EDITION_LEGACY, value: "NONE" },
984
1114
  edition_defaults = { edition: EDITION_PROTO3, value: "VERIFY" }
985
1115
  ];
986
1116
 
@@ -993,7 +1123,10 @@ message FeatureSet {
993
1123
  retention = RETENTION_RUNTIME,
994
1124
  targets = TARGET_TYPE_FIELD,
995
1125
  targets = TARGET_TYPE_FILE,
996
- edition_defaults = { edition: EDITION_PROTO2, value: "LENGTH_PREFIXED" }
1126
+ feature_support = {
1127
+ edition_introduced: EDITION_2023,
1128
+ },
1129
+ edition_defaults = { edition: EDITION_LEGACY, value: "LENGTH_PREFIXED" }
997
1130
  ];
998
1131
 
999
1132
  enum JsonFormat {
@@ -1006,15 +1139,109 @@ message FeatureSet {
1006
1139
  targets = TARGET_TYPE_MESSAGE,
1007
1140
  targets = TARGET_TYPE_ENUM,
1008
1141
  targets = TARGET_TYPE_FILE,
1009
- edition_defaults = { edition: EDITION_PROTO2, value: "LEGACY_BEST_EFFORT" },
1142
+ feature_support = {
1143
+ edition_introduced: EDITION_2023,
1144
+ },
1145
+ edition_defaults = { edition: EDITION_LEGACY, value: "LEGACY_BEST_EFFORT" },
1010
1146
  edition_defaults = { edition: EDITION_PROTO3, value: "ALLOW" }
1011
1147
  ];
1012
1148
 
1149
+ enum EnforceNamingStyle {
1150
+ ENFORCE_NAMING_STYLE_UNKNOWN = 0;
1151
+ STYLE2024 = 1;
1152
+ STYLE_LEGACY = 2;
1153
+ STYLE2026 = 3;
1154
+ }
1155
+ optional EnforceNamingStyle enforce_naming_style = 7 [
1156
+ retention = RETENTION_SOURCE,
1157
+ targets = TARGET_TYPE_FILE,
1158
+ targets = TARGET_TYPE_EXTENSION_RANGE,
1159
+ targets = TARGET_TYPE_MESSAGE,
1160
+ targets = TARGET_TYPE_FIELD,
1161
+ targets = TARGET_TYPE_ONEOF,
1162
+ targets = TARGET_TYPE_ENUM,
1163
+ targets = TARGET_TYPE_ENUM_ENTRY,
1164
+ targets = TARGET_TYPE_SERVICE,
1165
+ targets = TARGET_TYPE_METHOD,
1166
+ feature_support = {
1167
+ edition_introduced: EDITION_2024,
1168
+ },
1169
+ edition_defaults = { edition: EDITION_LEGACY, value: "STYLE_LEGACY" },
1170
+ edition_defaults = { edition: EDITION_2024, value: "STYLE2024" },
1171
+ edition_defaults = { edition: EDITION_UNSTABLE, value: "STYLE2026" }
1172
+ ];
1173
+
1174
+ message VisibilityFeature {
1175
+ enum DefaultSymbolVisibility {
1176
+ DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0;
1177
+
1178
+ // Default pre-EDITION_2024, all UNSET visibility are export.
1179
+ EXPORT_ALL = 1;
1180
+
1181
+ // All top-level symbols default to export, nested default to local.
1182
+ EXPORT_TOP_LEVEL = 2;
1183
+
1184
+ // All symbols default to local.
1185
+ LOCAL_ALL = 3;
1186
+
1187
+ // All symbols local by default. Nested types cannot be exported.
1188
+ // With special case caveat for message { enum {} reserved 1 to max; }
1189
+ // This is the recommended setting for new protos.
1190
+ STRICT = 4;
1191
+ }
1192
+ reserved 1 to max;
1193
+ }
1194
+ optional VisibilityFeature.DefaultSymbolVisibility default_symbol_visibility =
1195
+ 8 [
1196
+ retention = RETENTION_SOURCE,
1197
+ targets = TARGET_TYPE_FILE,
1198
+ feature_support = {
1199
+ edition_introduced: EDITION_2024,
1200
+ },
1201
+ edition_defaults = { edition: EDITION_LEGACY, value: "EXPORT_ALL" },
1202
+ edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" }
1203
+ ];
1204
+
1013
1205
  reserved 999;
1014
1206
 
1015
- extensions 1000; // for Protobuf C++
1016
- extensions 1001; // for Protobuf Java
1017
- extensions 1002; // for Protobuf Go
1207
+ extensions 1000 to 9994 [
1208
+ declaration = {
1209
+ number: 1000,
1210
+ full_name: ".pb.cpp",
1211
+ type: ".pb.CppFeatures"
1212
+ },
1213
+ declaration = {
1214
+ number: 1001,
1215
+ full_name: ".pb.java",
1216
+ type: ".pb.JavaFeatures"
1217
+ },
1218
+ declaration = { number: 1002, full_name: ".pb.go", type: ".pb.GoFeatures" },
1219
+ declaration = {
1220
+ number: 1003,
1221
+ full_name: ".pb.python",
1222
+ type: ".pb.PythonFeatures"
1223
+ },
1224
+ declaration = {
1225
+ number: 1004,
1226
+ full_name: ".pb.csharp",
1227
+ type: ".pb.CSharpFeatures"
1228
+ },
1229
+ declaration = {
1230
+ number: 1100,
1231
+ full_name: ".imp.impress_feature_set",
1232
+ type: ".imp.ImpressFeatureSet"
1233
+ },
1234
+ declaration = {
1235
+ number: 9989,
1236
+ full_name: ".pb.java_mutable",
1237
+ type: ".pb.JavaMutableFeatures"
1238
+ },
1239
+ declaration = {
1240
+ number: 9990,
1241
+ full_name: ".pb.proto1",
1242
+ type: ".pb.Proto1Features"
1243
+ }
1244
+ ];
1018
1245
 
1019
1246
  extensions 9995 to 9999; // For internal testing
1020
1247
  extensions 10000; // for https://github.com/bufbuild/protobuf-es
@@ -1031,7 +1258,15 @@ message FeatureSetDefaults {
1031
1258
  // be used. This field must be in strict ascending order by edition.
1032
1259
  message FeatureSetEditionDefault {
1033
1260
  optional Edition edition = 3;
1034
- optional FeatureSet features = 2;
1261
+
1262
+ // Defaults of features that can be overridden in this edition.
1263
+ optional FeatureSet overridable_features = 4;
1264
+
1265
+ // Defaults of features that can't be overridden in this edition.
1266
+ optional FeatureSet fixed_features = 5;
1267
+
1268
+ reserved 1, 2;
1269
+ reserved "features";
1035
1270
  }
1036
1271
  repeated FeatureSetEditionDefault defaults = 1;
1037
1272
 
@@ -1178,6 +1413,13 @@ message SourceCodeInfo {
1178
1413
  optional string trailing_comments = 4;
1179
1414
  repeated string leading_detached_comments = 6;
1180
1415
  }
1416
+
1417
+ // Extensions for tooling.
1418
+ extensions 536000000 [declaration = {
1419
+ number: 536000000
1420
+ type: ".buf.descriptor.v1.SourceCodeInfoExtension"
1421
+ full_name: ".buf.descriptor.v1.buf_source_code_info_extension"
1422
+ }];
1181
1423
  }
1182
1424
 
1183
1425
  // Describes the relationship between generated code and its original source
@@ -1217,3 +1459,14 @@ message GeneratedCodeInfo {
1217
1459
  optional Semantic semantic = 5;
1218
1460
  }
1219
1461
  }
1462
+
1463
+ // Describes the 'visibility' of a symbol with respect to the proto import
1464
+ // system. Symbols can only be imported when the visibility rules do not prevent
1465
+ // it (ex: local symbols cannot be imported). Visibility modifiers can only set
1466
+ // on `message` and `enum` as they are the only types available to be referenced
1467
+ // from other files.
1468
+ enum SymbolVisibility {
1469
+ VISIBILITY_UNSET = 0;
1470
+ VISIBILITY_LOCAL = 1;
1471
+ VISIBILITY_EXPORT = 2;
1472
+ }
@@ -152,24 +152,22 @@ option cc_enable_arenas = true;
152
152
  // An implementation may provide options to override this default behavior for
153
153
  // repeated and message fields.
154
154
  //
155
- // In order to reset a field's value to the default, the field must
156
- // be in the mask and set to the default value in the provided resource.
157
- // Hence, in order to reset all fields of a resource, provide a default
158
- // instance of the resource and set all fields in the mask, or do
159
- // not provide a mask as described below.
160
- //
161
- // If a field mask is not present on update, the operation applies to
162
- // all fields (as if a field mask of all fields has been specified).
163
- // Note that in the presence of schema evolution, this may mean that
164
- // fields the client does not know and has therefore not filled into
165
- // the request will be reset to their default. If this is unwanted
166
- // behavior, a specific service may require a client to always specify
167
- // a field mask, producing an error if not.
168
- //
169
- // As with get operations, the location of the resource which
170
- // describes the updated values in the request message depends on the
171
- // operation kind. In any case, the effect of the field mask is
172
- // required to be honored by the API.
155
+ // Note that libraries which implement FieldMask resolution have various
156
+ // different behaviors in the face of empty masks or the special "*" mask.
157
+ // When implementing a service you should confirm these cases have the
158
+ // appropriate behavior in the underlying FieldMask library that you desire,
159
+ // and you may need to special case those cases in your application code if
160
+ // the underlying field mask library behavior differs from your intended
161
+ // service semantics.
162
+ //
163
+ // Update methods implementing https://google.aip.dev/134
164
+ // - MUST support the special value * meaning "full replace"
165
+ // - MUST treat an omitted field mask as "replace fields which are present".
166
+ //
167
+ // Other methods implementing https://google.aip.dev/157
168
+ // - SHOULD support the special value "*" to mean "get all".
169
+ // - MUST treat an omitted field mask to mean "get all", unless otherwise
170
+ // documented.
173
171
  //
174
172
  // ## Considerations for HTTP REST
175
173
  //