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
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (7d43131) - Add a new
includingDefaultValueWithoutPresenceFields
option to the Java parser which is intended to replace the currentincludingDefaultValueFields
. (58baeb4)
Kotlin
- Add
java_features.proto
tokotlin_mvn
release (369732a)
Csharp
- Regenerate stale files (c3417f5)
- Optimize JSON parsing in
JsonTokenizer
. (68e6e3e) - Avoid string concatenation when looking up enum values by name. (e6684ac)
- Cache
StringBuilder
instances in the .NETJsonTextTokenizer
. (fac929d) - Enable Editions in the C# generator. (421040b)
- Runtime support for Protobuf Editions in C#. (450022d)
- Tweak "group to property name" mapping for C#. Under editions, where fields using a delimited encoding have independent field names from type names, we want to use the specified field name. (139ea4d)
- Ignore invalid enum string values in JSON, when invalid fields are being ignored. (55e50ba)
Objective-C
- Optimize startup be reducing selector lookup. (b375d01)
- Add the privacy manifest to the ObjC CocoaPod. (0d91515)
Python
- Add temporary alias for
system_python.bzl
at previous location . (#16787) (ffd753f) - Implement feature lifetime validation in
protoc
and the C++ runtime. (b3b4497) - Fix text-format delimited field handling (29c69ff)
- Python JSON parser: Ignore invalid enum string values if
ignore_unknown_fields
is set (#15887) (86abf35) - Fix upb python: DO NOT create empty optional field after sorting empty repeated field (7cf0238)
- Enable Protobuf Python version check. (0442ed6)
- Register Scalar/MessageMapContainerTypes as virtual subclasses of MutableMapping instead of inheriting directly. (5b32936)
- Rename the
includingDefaultValueWithoutPresenceFields
andalways_print_without_presence_fields
toalwaysPrintFieldsWithNoPresence
in the C++, Py and Java JSON serializers for consistency. (7d43131) - Add new
including_default_value_without_presence_fields
to Python JSON serializer. (25c6d34) - Adhere to PEP 8 (#15127) (21ab745)
PHP
- Don't break the trace (#11311) (d67f921)
- Fix inconsistent timestamp json encode/decode (#12396) (47e92cd)
- Feat: more readable phpdoc escaping (#11208) (f929439)
PHP C-Extension
- Regenerate stale files (c3417f5)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
- Add bigdecimal to dependencies (#16379) (d810ef6)
- Implement service & method descriptor lookup in Ruby (#15817) (2082ee8)
- Implement edition 2023 support in all Ruby runtimes. (bca8fb6)
- Ruby implement
memsize
functions for native types (#10291) (87cbddd) - Moved
ObjectCache
into an internal module. (f824f6d) - [Ruby] Delegate difference, intersection, union from
RepeatedField
toArray
(#15652) (11eab86) - Move the
RubyMessage.java
JSON "include defaults" to use alwaysPrintFieldsWithNoPresence. (4d23fa0) - Increased the size of the error message buffer by 4x, to 511 bytes. (32a6f7a)
Ruby C-Extension
- Regenerate stale files (c3417f5)
- Implement service & method descriptor lookup in Ruby (#15817) (2082ee8)
- Implement edition 2023 support in all Ruby runtimes. (bca8fb6)
- Ruby implement
memsize
functions for native types (#10291) (87cbddd) - Moved
ObjectCache
into an internal module. (f824f6d) - See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
- Regenerate stale files (c3417f5)
- Setup upb installation with
cmake
. (6898451) - Fix text-format delimited field handling (29c69ff)
- Print non-extension fields by field number order instead of
.proto
file order. (8612d5e) - Implement service & method descriptor lookup in Ruby (#15817) (2082ee8)
- Implement edition 2023 support in all Ruby runtimes. (bca8fb6)
- Adds mutable extension accessors to the codegen for upb C for getting mutable extension messages. (e8244da)
- Ruby implement
memsize
functions for native types (#10291) (87cbddd) - Increased the size of the error message buffer by 4x, to 511 bytes. (32a6f7a)
Other
- MODULE.bazel fixes for protobuf BCR release. (#16927) (f396506)
- Fix whitespace merge issue in gencode (f8a4a68)
- Work around windows path length limitations by moving immutable -> full in open source (new generator paths) and shortening long file names. (#16825) (615e704)
- Move the windows path length workarounds out of protobuf-ci (9d715cb)
- Update
src/file_lists.cmake
for staleness (cd337dd) - Add
system_python
toprotobuf_deps.bzl
. (65ee123) - Migrate bazel tests to protobuf-ci. (1ee203b)
- Fix bazel cache issues in 7.0.0 (16acf7e)
- Add redirects for C++ and Java proto rules (9da1b86)
- Add redirects for proto rules (d4d34ab)
- Feat: automate publishing releases to Bazel Central Registry (#16014) (d2b71b3)
- Add PrivacyInfo.xcprivacy (#15557) (684660f)