bin/x86_64-macos/google/protobuf/descriptor.proto in grpc-tools-1.54.3 vs bin/x86_64-macos/google/protobuf/descriptor.proto in grpc-tools-1.55.0
- old
+ new
@@ -34,11 +34,10 @@
//
// The messages in this file describe the definitions found in .proto files.
// A valid .proto file can be translated directly to a FileDescriptorProto
// without any other information (e.g. without reading its imports).
-
syntax = "proto2";
package google.protobuf;
option go_package = "google.golang.org/protobuf/types/descriptorpb";
@@ -84,12 +83,17 @@
// functionality of the descriptors -- the information is needed only by
// development tools.
optional SourceCodeInfo source_code_info = 9;
// The syntax of the proto file.
- // The supported values are "proto2" and "proto3".
+ // The supported values are "proto2", "proto3", and "editions".
+ //
+ // If `edition` is present, this value must be "editions".
optional string syntax = 12;
+
+ // The edition of the proto file, which is an opaque string.
+ optional string edition = 13;
}
// Describes a message type.
message DescriptorProto {
optional string name = 1;
@@ -127,11 +131,54 @@
message ExtensionRangeOptions {
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
+ message Declaration {
+ // The extension number declared within the extension range.
+ optional int32 number = 1;
+ // The fully-qualified name of the extension field. There must be a leading
+ // dot in front of the full name.
+ optional string full_name = 2;
+
+ // The fully-qualified type name of the extension field. Unlike
+ // Metadata.type, Declaration.type must have a leading dot for messages
+ // and enums.
+ optional string type = 3;
+
+ // Deprecated. Please use "repeated".
+ optional bool is_repeated = 4 [deprecated = true];
+
+ // If true, indicates that the number is reserved in the extension range,
+ // and any extension field with the number will fail to compile. Set this
+ // when a declared extension field is deleted.
+ optional bool reserved = 5;
+
+ // If true, indicates that the extension must be defined as repeated.
+ // Otherwise the extension must be defined as optional.
+ optional bool repeated = 6;
+ }
+
+ // go/protobuf-stripping-extension-declarations
+ // Like Metadata, but we use a repeated field to hold all extension
+ // declarations. This should avoid the size increases of transforming a large
+ // extension range into small ranges in generated binaries.
+ repeated Declaration declaration = 2 [retention = RETENTION_SOURCE];
+
+ // The verification state of the extension range.
+ enum VerificationState {
+ // All the extensions of the range must be declared.
+ DECLARATION = 0;
+ UNVERIFIED = 1;
+ }
+
+ // The verification state of the range.
+ // TODO(b/278783756): flip the default to DECLARATION once all empty ranges
+ // are marked as UNVERIFIED.
+ optional VerificationState verification = 3 [default = UNVERIFIED];
+
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
// Describes a field within a message.
@@ -303,11 +350,10 @@
optional bool client_streaming = 5 [default = false];
// Identifies if server streams multiple server messages
optional bool server_streaming = 6 [default = false];
}
-
// ===================================================================
// Options
// Each of the definitions above may have "options" attached. These are
// just annotations which may cause code to be generated slightly differently
@@ -344,11 +390,10 @@
// placed. By default, the proto package is used, but this is often
// inappropriate because proto packages do not normally start with backwards
// domain names.
optional string java_package = 1;
-
// Controls the name of the wrapper Java class generated for the .proto file.
// That class will always contain the .proto file's getDescriptor() method as
// well as any top-level extensions defined in the .proto file.
// If java_multiple_files is disabled, then all the other classes from the
// .proto file will be nested inside the single wrapper outer class.
@@ -371,11 +416,10 @@
// Message reflection will do the same.
// However, an extension field still accepts non-UTF-8 byte sequences.
// This option has no effect on when used with the lite runtime.
optional bool java_string_check_utf8 = 27 [default = false];
-
// Generated classes can be optimized for speed or code size.
enum OptimizeMode {
SPEED = 1; // Generate complete code for parsing, serialization,
// etc.
CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
@@ -388,13 +432,10 @@
// - The basename of the package import path, if provided.
// - Otherwise, the package statement in the .proto file, if present.
// - Otherwise, the basename of the .proto file, without extension.
optional string go_package = 11;
-
-
-
// Should generic services be generated in each language? "Generic" services
// are not specific to any particular RPC system. They are generated by the
// main code generators in each language (without additional plugins).
// Generic services were the only kind of service generation supported by
// early versions of google.protobuf.
@@ -416,11 +457,10 @@
// Enables the use of arenas for the proto messages in this file. This applies
// only to generated classes for C++.
optional bool cc_enable_arenas = 31 [default = true];
-
// Sets the objective c class prefix which is prepended to all objective c
// generated classes from this .proto. There is no default.
optional string objc_class_prefix = 36;
// Namespace for generated classes; defaults to the package.
@@ -449,11 +489,10 @@
// Use this option to change the package of ruby generated classes. Default
// is empty. When this option is not set, the package name will be used for
// determining the ruby package.
optional string ruby_package = 45;
-
// The parser stores options it doesn't recognize here.
// See the documentation for the "Options" section above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message.
@@ -495,10 +534,14 @@
// this is a formalization for deprecating messages.
optional bool deprecated = 3 [default = false];
reserved 4, 5, 6;
+ // NOTE: Do not set the option in .proto files. Always use the maps syntax
+ // instead. The option should only be implicitly set by the proto compiler
+ // parser.
+ //
// Whether the message is an automatically generated map entry type for the
// maps field.
//
// For maps fields:
// map<KeyType, ValueType> map_field = 1;
@@ -512,19 +555,26 @@
//
// Implementations may choose not to generate the map_entry=true message, but
// use a native map in the target language to hold the keys and values.
// The reflection APIs in such implementations still need to work as
// if the field is a repeated message field.
- //
- // NOTE: Do not set the option in .proto files. Always use the maps syntax
- // instead. The option should only be implicitly set by the proto compiler
- // parser.
optional bool map_entry = 7;
reserved 8; // javalite_serializable
reserved 9; // javanano_as_lite
+ // Enable the legacy handling of JSON field name conflicts. This lowercases
+ // and strips underscored from the fields before comparison in proto3 only.
+ // The new behavior takes `json_name` into account and applies to proto2 as
+ // well.
+ //
+ // This should only be used as a temporary measure against broken builds due
+ // to the change in behavior for JSON field name conflicts.
+ //
+ // TODO(b/261750190) This is legacy behavior we plan to remove once downstream
+ // teams have had time to migrate.
+ optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
@@ -532,17 +582,25 @@
}
message FieldOptions {
// The ctype option instructs the C++ code generator to use a different
// representation of the field than it normally would. See the specific
- // options below. This option is not yet implemented in the open source
- // release -- sorry, we'll try to include it in a future version!
+ // options below. This option is only implemented to support use of
+ // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of
+ // type "bytes" in the open source release -- sorry, we'll try to include
+ // other types in a future version!
optional CType ctype = 1 [default = STRING];
enum CType {
// Default mode.
STRING = 0;
+ // The option [ctype=CORD] may be applied to a non-repeated field of type
+ // "bytes". It indicates that in C++, the data should be stored in a Cord
+ // instead of a string. For very large strings, this may reduce memory
+ // fragmentation. It may also allow better performance when parsing from a
+ // Cord, or when parsing with aliasing enabled, as the parsed Cord may then
+ // alias the original buffer.
CORD = 1;
STRING_PIECE = 2;
}
// The packed option can be enabled for repeated primitive fields to enable
@@ -590,11 +648,10 @@
// all method signatures remain the same. Furthermore, thread-safety of the
// interface is not affected by this option; const methods remain safe to
// call from multiple threads concurrently, while non-const methods continue
// to require exclusive access.
//
- //
// Note that implementations may choose not to check required fields within
// a lazy sub-message. That is, calling IsInitialized() on the outer message
// may return true even if the inner message has missing required fields.
// This is necessary because otherwise the inner message would have to be
// parsed in order to perform the check, defeating the purpose of lazy
@@ -602,15 +659,12 @@
// must be consistent about it. That is, for any particular sub-message, the
// implementation must either *always* check its required fields, or *never*
// check its required fields, regardless of whether or not the message has
// been parsed.
//
- // As of 2021, lazy does no correctness checks on the byte stream during
- // parsing. This may lead to crashes if and when an invalid byte stream is
- // finally parsed upon access.
- //
- // TODO(b/211906113): Enable validation on lazy fields.
+ // As of May 2022, lazy verifies the contents of the byte stream during
+ // parsing. An invalid byte stream will cause the overall parsing to fail.
optional bool lazy = 5 [default = false];
// unverified_lazy does no correctness checks on the byte stream. This should
// only be used where lazy with verification is prohibitive for performance
// reasons.
@@ -623,11 +677,45 @@
optional bool deprecated = 3 [default = false];
// For Google-internal migration only. Do not use.
optional bool weak = 10 [default = false];
+ // Indicate that the field value should not be printed out when using debug
+ // formats, e.g. when the field contains sensitive credentials.
+ optional bool debug_redact = 16 [default = false];
+ // If set to RETENTION_SOURCE, the option will be omitted from the binary.
+ // Note: as of January 2023, support for this is in progress and does not yet
+ // have an effect (b/264593489).
+ enum OptionRetention {
+ RETENTION_UNKNOWN = 0;
+ RETENTION_RUNTIME = 1;
+ RETENTION_SOURCE = 2;
+ }
+
+ optional OptionRetention retention = 17;
+
+ // This indicates the types of entities that the field may apply to when used
+ // as an option. If it is unset, then the field may be freely used as an
+ // option on any kind of entity. Note: as of January 2023, support for this is
+ // in progress and does not yet have an effect (b/264593489).
+ enum OptionTargetType {
+ TARGET_TYPE_UNKNOWN = 0;
+ TARGET_TYPE_FILE = 1;
+ TARGET_TYPE_EXTENSION_RANGE = 2;
+ TARGET_TYPE_MESSAGE = 3;
+ TARGET_TYPE_FIELD = 4;
+ TARGET_TYPE_ONEOF = 5;
+ TARGET_TYPE_ENUM = 6;
+ TARGET_TYPE_ENUM_ENTRY = 7;
+ TARGET_TYPE_SERVICE = 8;
+ TARGET_TYPE_METHOD = 9;
+ }
+
+ optional OptionTargetType target = 18 [deprecated = true];
+ repeated OptionTargetType targets = 19;
+
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
@@ -655,10 +743,18 @@
// is a formalization for deprecating enums.
optional bool deprecated = 3 [default = false];
reserved 5; // javanano_as_lite
+ // Enable the legacy handling of JSON field name conflicts. This lowercases
+ // and strips underscored from the fields before comparison in proto3 only.
+ // The new behavior takes `json_name` into account and applies to proto2 as
+ // well.
+ // TODO(b/261750190) Remove this legacy behavior once downstream teams have
+ // had time to migrate.
+ optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true];
+
// The parser stores options it doesn't recognize here. See above.
repeated UninterpretedOption uninterpreted_option = 999;
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
@@ -727,11 +823,10 @@
// Clients can define custom options in extensions of this message. See above.
extensions 1000 to max;
}
-
// A message representing a option the parser does not recognize. This only
// appears in options protos created by the compiler::Parser class.
// DescriptorPool resolves these when building Descriptor objects. Therefore,
// options protos in descriptor objects (e.g. returned by Descriptor::options(),
// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
@@ -912,10 +1007,22 @@
// Identifies the starting offset in bytes in the generated code
// that relates to the identified object.
optional int32 begin = 3;
// Identifies the ending offset in bytes in the generated code that
- // relates to the identified offset. The end offset should be one past
+ // relates to the identified object. The end offset should be one past
// the last relevant byte (so the length of the text = end - begin).
optional int32 end = 4;
+
+ // Represents the identified object's effect on the element in the original
+ // .proto file.
+ enum Semantic {
+ // There is no effect or the effect is indescribable.
+ NONE = 0;
+ // The element is set or otherwise mutated.
+ SET = 1;
+ // An alias to the element is returned.
+ ALIAS = 2;
+ }
+ optional Semantic semantic = 5;
}
}