Releases: protocolbuffers/protobuf
Releases · protocolbuffers/protobuf
Protocol Buffers v28.0
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- UPB text encoder without using reflection for Rust (used for a message's Debug trait) that will print out field number to value entries instead of field name to value entries of a message like how it's expected for the usual text format using reflection. (f9dd9ce)
- Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Always report plugin support errors from protoc. (986ef8d)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Mark deleted fields in descriptor.proto reserved (44c409d)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
C++
- Move -Werror to our test/dev bazelrc files. (#17938) (f5a1b17)
- Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (72b0b7a)
- Removed specific MSVC settings when installing (#17285) (770090e)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Fix a bug in which proto code uses ctype instead of string_type internally. (dfbe987)
- Add an optimization that prevents an exponential number of comparisons on deeply (594a71f)
- Replace FindHelper() with BucketNumber() when only the bucket number is required. (8c7b1ec)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Prohibit using features in the same file they're defined in. (24b91a7)
- Implement new Debug API with redaction. (bb68eb2)
- Use bool HasHasbits(const FieldDescriptor*) instead of manual checks. (448e326)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Put arena cleanup nodes on a separate chunked list instead of at the ends of arena blocks. (f70d90b)
- Fix validation checks of implicit presence. (d6c2833)
- Clarify map behaviors in editions. (0dbd99a)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
Java
- Binary compatibility shims for GeneratedMessageV3, SingleFieldBuilderV3, RepeatedFieldBuilderV3, and their nested classes to restore binary compatibility with <=v3.x.x generated code built against v3.x.x prior to v4.26.0 breaking release. (6bf01c5)
- Remove unused pom.xml files. (aaf5f79)
- Add overload for LazyStringArrayList.add(String): boolean (761d49a)
- Hoist SmallSortedMap.getNumArrayEntries() outside loops over array entries (229c958)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Java: Deprecate newExtensionWriter. (7122ba1)
- Immutable java: Use new lower-allocation extension serialization APIs from gencode (4151486)
- Reserialize all unresolved features using java features from the generated pool in case of descriptors from the custom pool. (415a147)
- Fix delimited inheritance in all languages. (8beb970)
- Full java runtime: Avoid allocating ArrayList iterators when serializing UnknownFieldSet (fac847c)
- Move back deprecation of java utf8 feature to 2024. (bd7078d)
- Reparse unknown features using extension registry containing Java features. (68d9087)
- Remove field SmallSortedMap.maxArraySize (16e0a63)
- Delete unused method SmallSortedSet.getOverflowEntriesDescending (c05be32)
- Avoid allocating FieldSet iterator if FieldSet is empty (3ba7280)
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init. (11c27df)
- Implement new Debug API with redaction. (bb68eb2)
- Replace SmallSortedMap.EmptySet with equivalent Collections.emptySet() (c6e2778)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Avoid allocating TreeMap in UnknownFieldSet.Builder.asMap (4b7c2d4)
- Avoid allocating iterator in TextFormat printing UnknownFieldSet (8c6e5b7)
- Add
null
to the list of reserved words. (510c143) - Add UnknownFieldSet.isEmpty (c56bddd)
- Java full runtime: Avoid allocating when calling asMap on empty UnknownFieldSet (d0b016f)
- Return the default instance when parsing from an empty byte[]. (f597991)
- Deprecate building from source with Maven to be removed in 4.28.x. (4c8da99)
- Java full runtime: Avoid allocating iterator if UnknownFieldSet's TreeMap is empty (4f12891)
- Proto java full runtime: avoid allocating Integers accessing enum lists (cc79f77)
- Split bootstrapped java_features.proto to keep it from leaking out. (2257232)
- Java Proto lite: avoid boxing Integers accessing enum lists (fb054c8)
- In the Kotlin DSL, reference builder methods with property syntax. (e9c9970)
- Java Proto Lite: Serialize repeated enums without allocating (de6aba9)
- Avoid boxing when ser...
Protocol Buffers v27.4
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
- Binary compatibility shims for GeneratedMessageV3, SingleFieldBuilderV3, RepeatedFieldBuilderV3, and their nested classes to restore binary compatibility with <=v3.x.x generated code built against v3.x.x prior to v4.26.0 breaking release. (8dd83da)
Protocol Buffers v28.0-rc3
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (72b0b7a)
Java
- Binary compatibility shims for GeneratedMessageV3, SingleFieldBuilderV3, RepeatedFieldBuilderV3, and their nested classes to restore binary compatibility with <=v3.x.x generated code built against v3.x.x prior to v4.26.0 breaking release. (6bf01c5)
Objective-C
- [ObjC] Add api to add a field to another collection of unknown fields. (0790ab4)
- [ObjC] Fix GPBUnknownField/GPBUnknownFields copy. (b3b9888)
- [ObjC] Raise an exception for a nil message. (35bd2be)
- [ObjC] Deprecate GPBUnknownFieldSet and related apis. (9f6ee72)
- [ObjC] More tests around unknown to known failure cases. (e822dce)
Rust
- Add visibility for rust public aliases for '@protobuf//:protobuf_rust' (2cee142)
Python
- Raise warnings for deprecated python cpp extension GetDebugString(). (5fc5558)
Other
- Remove protobuf rust from BCR presubmits for now. (92552d3)
Protocol Buffers v28.0-rc2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
- Remove unused pom.xml files. (aaf5f79)
Kotlin
- Remove unused pom.xml files. (aaf5f79)
Objective-C
- [ObjC] Support errors when merging unknown fields to a message. (c46340e)
- [ObjC] Add apis for removing things from
GPBUnknownFields
. (c5c9c89) - [ObjC] Collect unknown fields as data (a6b3535)
- [ObjC] Internal helper for getting the unknown field data from a message (bf2d4e7)
- [ObjC] Update tests to use both unknown fields apis. (0832b52)
- [ObjC] Deprecate GPBTextFormatForUnknownFieldSet(). (d1b6f8c)
- [ObjC] Parsing helper and tests around unknown fields. (9b16ee4)
- [ObjC] Add test around enum unknown values. (fad7b78)
- [ObjC] Expose a helper for stream error. (cf7abf6)
- [ObjC] Support MessageSet with
GPBUnknownFields
. (ddf9b76) - [ObjC] Update MessageSet Parsing. (5fa8cd9)
- [ObjC] Validate MessageSet expectations. (3aa491c)
- [ObjC] Improve parsing validations (ef4898f)
Python
- Remove service.py usages in builder (902a68a)
- Raise warnings for deprecated google/protobuf/reflection.py APIs. (38140ac)
Ruby
Ruby C-Extension
Other
Protocol Buffers v27.3
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Revert workaround for std::mutex issues on github windows runners. (ba3e7d7)
C++
- Update staleness (b7ef2ca)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (22d9a03) - Refactor the way we turn on the optimization in StrongPointer. (a15c9c5)
Java
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (22d9a03)
PHP
PHP C-Extension
Ruby
Ruby C-Extension
Other
Protocol Buffers v25.4
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
- Check that size is non-negative when reading string or bytes in StreamDecoder. (165cf12)
- Add Automatic-Module-Name (#14562) (552ad31)
PHP
PHP C-Extension
- Regen stale files (367c7be)
Ruby
Ruby C-Extension
- Regen stale files (367c7be)
Other
- Drop 2.7 in linux test (#17524) (314fc8b)
- Fix targets (eb1fdd3)
- Update bazel to 6.3.2 (a5dadc3)
- Backport staleness changes to 25.x (c3b9b4f)
- Downgrade CMake to 3.29 to workaround Abseil issue. (bdb1f75)
- Upgrade macos-11 tests to macos-12 (27041af)
- Use explicit names of our large runners (c73d6c8)
- Upgrade our C++ release tests to large runners. (8ec9a43)
- Downgrade our sanitized builds to ubuntu-20. (892a2ce)
- Disable TSAN tests due to what appears to be a sanitizer bug (aa32865)
- Disable MacOS C++ Cmake test for now. (6b1c253)
- Update setup-php to 2.30.0 and re-enable macOS PHP 8.2 tests. (220a74b)
- Add back error message unconditionally (f60c624)
- Pin bazel 6 for 25.x (3b72455)
- Actually fail if staleness fail (8688825)
Protocol Buffers v28.0-rc1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- UPB text encoder without using reflection for Rust (used for a message's Debug trait) that will print out field number to value entries instead of field name to value entries of a message like how it's expected for the usual text format using reflection. (f9dd9ce)
- Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Always report plugin support errors from protoc. (986ef8d)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Mark deleted fields in descriptor.proto reserved (44c409d)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
C++
- Removed specific MSVC settings when installing (#17285) (770090e)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Fix a bug in which proto code uses ctype instead of string_type internally. (dfbe987)
- Add an optimization that prevents an exponential number of comparisons on deeply (594a71f)
- Replace FindHelper() with BucketNumber() when only the bucket number is required. (8c7b1ec)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Prohibit using features in the same file they're defined in. (24b91a7)
- Implement new Debug API with redaction. (bb68eb2)
- Use bool HasHasbits(const FieldDescriptor*) instead of manual checks. (448e326)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Put arena cleanup nodes on a separate chunked list instead of at the ends of arena blocks. (f70d90b)
- Fix validation checks of implicit presence. (d6c2833)
- Clarify map behaviors in editions. (0dbd99a)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
Java
- Add overload for LazyStringArrayList.add(String): boolean (761d49a)
- Hoist SmallSortedMap.getNumArrayEntries() outside loops over array entries (229c958)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Java: Deprecate newExtensionWriter. (7122ba1)
- Immutable java: Use new lower-allocation extension serialization APIs from gencode (4151486)
- Reserialize all unresolved features using java features from the generated pool in case of descriptors from the custom pool. (415a147)
- Fix delimited inheritance in all languages. (8beb970)
- Full java runtime: Avoid allocating ArrayList iterators when serializing UnknownFieldSet (fac847c)
- Move back deprecation of java utf8 feature to 2024. (bd7078d)
- Reparse unknown features using extension registry containing Java features. (68d9087)
- Remove field SmallSortedMap.maxArraySize (16e0a63)
- Delete unused method SmallSortedSet.getOverflowEntriesDescending (c05be32)
- Avoid allocating FieldSet iterator if FieldSet is empty (3ba7280)
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init. (11c27df)
- Implement new Debug API with redaction. (bb68eb2)
- Replace SmallSortedMap.EmptySet with equivalent Collections.emptySet() (c6e2778)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Avoid allocating TreeMap in UnknownFieldSet.Builder.asMap (4b7c2d4)
- Avoid allocating iterator in TextFormat printing UnknownFieldSet (8c6e5b7)
- Add
null
to the list of reserved words. (510c143) - Add UnknownFieldSet.isEmpty (c56bddd)
- Java full runtime: Avoid allocating when calling asMap on empty UnknownFieldSet (d0b016f)
- Return the default instance when parsing from an empty byte[]. (f597991)
- Deprecate building from source with Maven to be removed in 4.28.x. (4c8da99)
- Java full runtime: Avoid allocating iterator if UnknownFieldSet's TreeMap is empty (4f12891)
- Proto java full runtime: avoid allocating Integers accessing enum lists (cc79f77)
- Split bootstrapped java_features.proto to keep it from leaking out. (2257232)
- Java Proto lite: avoid boxing Integers accessing enum lists (fb054c8)
- In the Kotlin DSL, reference builder methods with property syntax. (e9c9970)
- Java Proto Lite: Serialize repeated enums without allocating (de6aba9)
- Avoid boxing when serializing primitive lists in CodedOutputStreamWriter (eaee04d)
Kotlin
- In the Kotlin DSL, reference builder methods with property syntax. (e9c9970)
Csharp
- Fix delimited inheritance in all languages. (8beb970)
- Handle groups in C# JsonParser (#16970) (092cc15)
- Introduce
MessageDescriptor.IsMapType
in C# reflection to make it easier to tell whether a given message was generated by protoc for a map field. (047fc7673eb2a7373f7ad8f5b0...
Protocol Buffers v27.2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Avoid calling absl::InitializeLog in protoc with MSVC (aa7fcb3)
C++
- Fix string_type bugs in edition 2023 (#17211) (4923b8d)
- Add simple conformance test that builds the old gencode against the current runtime. (9cfb59b)
- Make the underlying type of the enum by 8-bits instead of using bitfields for (316f493)
Java
- Cleanup imports and comments in V3 stubs. (270ca66)
- Add stubs for GeneratedMessageV3, RepeatedFieldBuilderV3, SingleFieldBuilderV3 for compatibility with older <4.26.x gencode. (1e360a4)
- Fix checking unknown field set empty which wasn't exposed yet in 27.x (c7a006a)
- Reserialize all unresolved features using java features from the generated pool in case of descriptors from the custom pool. (2426a02)
- Reparse unknown features using extension registry containing Java features. (e5ddc45)
- Fix data race in crosslink. (3d71e22)
- Fix delimited inheritance in all languages. (c4f359e)
Csharp
Python
- Fix delimited inheritance in all languages. (c4f359e)
PHP
PHP C-Extension
- Regenerate stale files (29f1b52)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
Ruby C-Extension
- Regenerate stale files (29f1b52)
- See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
- Fix delimited inheritance in all languages. (c4f359e)
Other
Protocol Buffers v27.1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Always report plugin support errors from protoc. (9a37881)
C++
- Fix a bug in edition defaults calculation. (887e95d)
Java
- Move back deprecation of java utf8 feature to 2024. (8ffc1d0)
Csharp
Other
- Avoid ODR violations from bootstrapped protos (f61d89c)
Protocol Buffers v27.0
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Future-proof edition 2023 against feature value support windows. (fea6847)
- Mark deleted fields in
descriptor.proto
reserved (d2da463) - Add extension declarations for known features. (f8d0a5b)
- Refactored the Java generator into separate packages and targets. (bd81fd9)
- Officially release Editions in 27.0. (baa83b6)
- Define lifetimes of edition 2023 features (77f62de)
- Implement feature lifetime validation in protoc and the C++ runtime. (b3b4497)
- Add edition lifetime options for feature specs. (b09b3e4)
- Enable editions support for Java Lite. (500c953)
- Release edition defaults CLI arguments. (7a0e10e)
- Update protoc release to include editions language features protos for Java and C++ (6483c47)
C++
- Future-proof edition 2023 against feature value support windows. (fea6847)
- Prohibit using features in the same file they're defined in. (8c5f3a7)
- Fix validation checks of implicit presence. (bdf6b10)
- Clarify map behaviors in editions. (61c9187)
- Ensure we allocate overaligned types with aligned
operator new
. (11ef0ff) - Fix text-format delimited field handling.(29c69ff)
- In debug mode, after clearing
oneof
messages on arenas, poison them if ASAN. (8826baf) - Allow
string_type
for Edition 2023. (d8251eb) - Breaking change: Ensure we allocate overaligned types with aligned
operator new
. (11ef0ff) - Python JSON parser: Ignore invalid enum string values if
ignore_unknown_fields
is set (#15887) (86abf35) - Move
java_features.proto
tojava/core/srce/main/resources
(274bc7f) - Add an RAII namespace printer helper for C++ codegen. (8599ab5)
- Enable editions support for Java Lite. (500c953)
- Add an RAII
ifndef
helper for C++ codegen. (1087274) - Clear
oneof
message fields even on arena on non-OPT builds. (5c183bd) - Implement edition 2023 support in all Ruby runtimes. (bca8fb6)
- Release edition defaults CLI arguments. (7a0e10e)
- Deprecate
Arena::CreateMessage
for OSS. (d4bfe52) - Open sourcing
reflection_visit_fieds
. (cfc07df) - Fixed the use of c++ keywords within namespace names (#15954) (988194a)
- Fix pkg-config metadata for shared abseil on windows (#15888) (fe6edca)
- Add
GetStringView()
andGetRepeatedStringView()
with scratch. (a3f5af0) - Avoid a 'may be used uninitialized' warning when built with '-c opt'. (#15846) (eb70b34)
- Add software prefetch to
ByteSizeLong
(948ca2e) - Add prefetching in arena blocks. (9e57b8e)
- Rename the
includingDefaultValueWithoutPresenceFields
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (7d43131) - Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks. (202b106)
- Avoid unused-parameter warning in field accessor listeners. (f4d5c2c)
- Add new
always_print_without_presence_fields
option to the C++ JSON serializer. (671b61b) - Fail to build descriptor if
ctype
is specified for non string/bytes fields (8b4c7a1) - Check
ctype()
inDescriptorBuilder
for edition 2023 and beyond. (307aeac) - Fail building descriptors if
ctype
is used for fields other than string or bytes. (403e207) - Fix generation of
HasExtension
andExtensionSize
functions to restrict to the (9f5be07) - Add the privacy manifest to the C++ CocoaPod. (982ea24)
Java
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init. (#16907) (4483c6b)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c18cb95) - Deprecate building from source with Maven to be removed in 4.28.x. (51b48a4)
- Split bootstrapped
java_features.proto
to keep it from leaking out. (d56cb7d) - Refactored the Java generator into separate packages and targets. (bd81fd9)
- Define lifetimes of edition 2023 features (77f62de)
- Check that size is non-negative when reading string or bytes in
StreamDecoder
. (a94f57b) - Fix text-format delimited field handling (29c69ff)
- Move
java_features.proto
tojava/core/srce/main/resources
(274bc7f) - Add
java_features.proto
tokotlin_mvn
release (369732a) - Enable editions support for Java Lite. (500c953)
- Fix descriptor to access type via
getType()
s.t. messages using delimited encoding are consistently treated as groups for Java lite. (9f001a9) - Make
UnsafeByteOperations
stable; removing experimental annotation. (0070ac1) - Fix features inheritance of
oneof
fields and extensions and fix/move unit tests to actually run. (eb10ebd) - Add software prefetch to
ByteSizeLong
(948ca2e) - Rename the
includingDefaultValueWithoutPresenceFields
and `always_print_wi...