Announcements
* [Protobuf News](https://protobuf.dev/news/) may include additional announcements or pre-announcements for upcoming changes.
Compiler
* Officially release Editions in 27.0. (https://github.com/protocolbuffers/protobuf/commit/baa83b6b43113a9b39c77e40dc4b10640abda657)
* Define lifetimes of edition 2023 features (https://github.com/protocolbuffers/protobuf/commit/77f62de93e2e84d6aab0364629919779970fb9f1)
* Implement feature lifetime validation in protoc and the C++ runtime. (https://github.com/protocolbuffers/protobuf/commit/b3b4497d61cabf1d0d37b10178f93c570ec67ac6)
* Add edition lifetime options for feature specs. (https://github.com/protocolbuffers/protobuf/commit/b09b3e46fe2a111d412251f6d043649334e9cbee)
* Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
* Release edition defaults CLI arguments. (https://github.com/protocolbuffers/protobuf/commit/7a0e10e0219fd753b97c2879eb9a92584a419105)
* Update protoc release to include editions language features protos for Java and C++ (https://github.com/protocolbuffers/protobuf/commit/6483c4755daadf1bceb95c4519851c52e8842d2e)
C++
* [C++] Ensure we allocate overaligned types with aligned operator new. (https://github.com/protocolbuffers/protobuf/commit/11ef0ffb873ebd270ab0266270ea965a04c5f2e5)
* Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
* In debug mode, after clearing oneof messages on arenas, poison them if ASAN. (https://github.com/protocolbuffers/protobuf/commit/8826bafcf507120bdb77883e9a9c0c43a5f5a302)
* Allow string_type for Edition 2023. (https://github.com/protocolbuffers/protobuf/commit/d8251ebc43cb21d3239a38554a2f0a618f368a78)
* Breaking change: Ensure we allocate overaligned types with aligned operator new. (https://github.com/protocolbuffers/protobuf/commit/11ef0ffb873ebd270ab0266270ea965a04c5f2e5)
* Python JSON parser: Ignore invalid enum string values if ignore_unknown_fields is set (15887) (https://github.com/protocolbuffers/protobuf/commit/86abf35ef5ee5b1004ec11bebb36d84c2ef6645e)
* Move java_features.proto to java/core/srce/main/resources (https://github.com/protocolbuffers/protobuf/commit/274bc7f26ff9da996714cf5cd011a7edaf6ce34c)
* Add an RAII namespace printer helper for C++ codegen. (https://github.com/protocolbuffers/protobuf/commit/8599ab5a5934579e9cb775b2cf2bcc69e67c2747)
* Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
* Add an RAII ifndef helper for C++ codegen. (https://github.com/protocolbuffers/protobuf/commit/1087274e7dc3ea6864af39a46091160b98e809f1)
* Clear oneof message fields even on arena on non-OPT builds. (https://github.com/protocolbuffers/protobuf/commit/5c183bda866e4410a66cda550d6afa2428408879)
* Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
* Release edition defaults CLI arguments. (https://github.com/protocolbuffers/protobuf/commit/7a0e10e0219fd753b97c2879eb9a92584a419105)
* Deprecate Arena::CreateMessage for OSS. (https://github.com/protocolbuffers/protobuf/commit/d4bfe52d998dae068ea7e2d44decd234bb090c46)
* Open sourcing reflection_visit_fieds. (https://github.com/protocolbuffers/protobuf/commit/cfc07df845a6b5cfc6837e56f3bf8ed20e06eb76)
* Fixed the use of c++ keywords within namespace names (15954) (https://github.com/protocolbuffers/protobuf/commit/988194a591f0b82b1ae52590e4daa5f0519ef8c7)
* Fix pkg-config metadata for shared abseil on windows (15888) (https://github.com/protocolbuffers/protobuf/commit/fe6edca15b2d80df79ab31117dc49621ef461202)
* Add GetStringView() and GetRepeatedStringView() with scratch. (https://github.com/protocolbuffers/protobuf/commit/a3f5af066fcb16bc2e90e28c006597aef1904eab)
* Avoid a 'may be used uninitialized' warning when built with '-c opt'. (15846) (https://github.com/protocolbuffers/protobuf/commit/eb70b343aab7584ed164a6ab4b39789427d0474f)
* Add software prefetch to ByteSizeLong (https://github.com/protocolbuffers/protobuf/commit/948ca2e0f3e74a2444bc4c3cc8da1d0a4cb82058)
* Add prefetching in arena blocks. (https://github.com/protocolbuffers/protobuf/commit/9e57b8e0d800b90d38ab70ac12f086310eb2484e)
* Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (https://github.com/protocolbuffers/protobuf/commit/26995798757fbfef5cf6648610848e389db1fecf)
* Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e)
* Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks. (https://github.com/protocolbuffers/protobuf/commit/202b10639242d3ee1d10c5577618aa008e222ec4)
* Avoid unused-parameter warning in field accessor listeners. (https://github.com/protocolbuffers/protobuf/commit/f4d5c2c571038146de2ee2b22f399527510501d2)
* Add new 'always_print_without_presence_fields' option to the C++ JSON serializer. (https://github.com/protocolbuffers/protobuf/commit/671b61b523dbec8bf8e41a61d5a8f689c3e2bb9f)
* Fail to build descriptor if ctype is specified for non string/bytes fields (https://github.com/protocolbuffers/protobuf/commit/8b4c7a1f33eb6849b57b6457d12adbd001109273)
* Check ctype() in DescriptorBuilder for edition 2023 and beyond. (https://github.com/protocolbuffers/protobuf/commit/307aeac9cf1b31a217921198e46a847179723240)
* Fail building descriptors if `ctype` is used for fields other than string or bytes. (https://github.com/protocolbuffers/protobuf/commit/403e2078b4501359f04b2c0b60bf37b9305a9e0e)
* Fix generation of HasExtension and ExtensionSize functions to restrict to the (https://github.com/protocolbuffers/protobuf/commit/9f5be076540d3b7374987ba42499080075dd6678)
* Add the privacy manifest to the C++ CocoaPod. (https://github.com/protocolbuffers/protobuf/commit/982ea24a9471f5bfbf411568aec8c938dfa7f5ae)
Java
* Define lifetimes of edition 2023 features (https://github.com/protocolbuffers/protobuf/commit/77f62de93e2e84d6aab0364629919779970fb9f1)
* Check that size is non-negative when reading string or bytes in StreamDecoder. (https://github.com/protocolbuffers/protobuf/commit/a94f57bd69e9a5999ba67736e4d70a9d7f96aaf5)
* Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
* Move java_features.proto to java/core/srce/main/resources (https://github.com/protocolbuffers/protobuf/commit/274bc7f26ff9da996714cf5cd011a7edaf6ce34c)
* Add java_features.proto to kotlin_mvn release (https://github.com/protocolbuffers/protobuf/commit/369732a581f44adc5a4dc5a03c866e9c7f04dc14)
* Enable editions support for Java Lite. (https://github.com/protocolbuffers/protobuf/commit/500c953d105d0447479be259a5fb0b6f7124e978)
* Fix descriptor to access type via getType() s.t. messages using delimited encoding are consistently treated as groups for Java lite. (https://github.com/protocolbuffers/protobuf/commit/9f001a965872b1c82e0f61e53aefb92109357213)
* Make UnsafeByteOperations stable; removing experimental annotation. (https://github.com/protocolbuffers/protobuf/commit/0070ac118863d7bfd12fa3eeab09e78178e41c65)
* Fix features inheritance of oneof fields and extensions and fix/move unit tests to actually run. (https://github.com/protocolbuffers/protobuf/commit/eb10ebd169593600e57106d6cdc84d6ad226f9a8)
* Add software prefetch to ByteSizeLong (https://github.com/protocolbuffers/protobuf/commit/948ca2e0f3e74a2444bc4c3cc8da1d0a4cb82058)
* Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (https://github.com/protocolbuffers/protobuf/commit/26995798757fbfef5cf6648610848e389db1fecf)
* Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e)
* Add a new 'includingDefaultValueWithoutPresenceFields' option to the Java parser which is intended to replace the current 'includingDefaultValueFields'. (https://github.com/protocolbuffers/protobuf/commit/58baeb4c3b664f8918d24cef5151083d9da9767c)
Kotlin
* Add java_features.proto to kotlin_mvn release (https://github.com/protocolbuffers/protobuf/commit/369732a581f44adc5a4dc5a03c866e9c7f04dc14)
Csharp
* C: Optimize JSON parsing in JsonTokenizer (https://github.com/protocolbuffers/protobuf/commit/68e6e3e8eecd31b0078422f688a3f01fb881d367)
* C: Avoid string concatenation when looking up enum values by name. (https://github.com/protocolbuffers/protobuf/commit/e6684ac037940c962c7fc3bd7b247b0e583bae2e)
* Cache StringBuilder instances in the .NET JsonTextTokenizer. (https://github.com/protocolbuffers/protobuf/commit/fac929d9aa607ccdfd078344ac12cee7d2b3fdda)
* Enable Editions in the C generator. (https://github.com/protocolbuffers/protobuf/commit/421040b32b002828f0a37404b62e1454fb610761)
* Runtime support for Protobuf Editions in C. (https://github.com/protocolbuffers/protobuf/commit/450022de9939f5eaf9f33696c17005ee7609eecc)
* 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. (https://github.com/protocolbuffers/protobuf/commit/139ea4d38525281349e38bcfadce449a6990421c)
* C: Ignore invalid enum string values in JSON, when invalid fields are being ignored. (https://github.com/protocolbuffers/protobuf/commit/55e50ba40679eb82269c62872116b76c5923d74d)
Objective-C
* Optimize startup be reducing selector lookup. (https://github.com/protocolbuffers/protobuf/commit/b375d010bf57a6d673125330ec47f6e6a7e03f5c)
* Add the privacy manifest to the ObjC CocoaPod. (https://github.com/protocolbuffers/protobuf/commit/0d9151519f28a2221c980594257d88c8bfe1be51)
Python
* Implement feature lifetime validation in protoc and the C++ runtime. (https://github.com/protocolbuffers/protobuf/commit/b3b4497d61cabf1d0d37b10178f93c570ec67ac6)
* Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
* Python JSON parser: Ignore invalid enum string values if ignore_unknown_fields is set (15887) (https://github.com/protocolbuffers/protobuf/commit/86abf35ef5ee5b1004ec11bebb36d84c2ef6645e)
* Fix upb python: DO NOT create empty optional field after sorting empty repeated field (https://github.com/protocolbuffers/protobuf/commit/7cf02389b30088182269a862f235712f60ab278a)
* Enable Protobuf Python version check. (https://github.com/protocolbuffers/protobuf/commit/0442ed62cbea989742933d6c90f4f0a70078959a)
* Register Scalar/MessageMapContainerTypes as virtual subclasses of MutableMapping instead of inheriting directly. (https://github.com/protocolbuffers/protobuf/commit/5b32936822e64b796fa18fcff53df2305c6b7686)
* Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (https://github.com/protocolbuffers/protobuf/commit/26995798757fbfef5cf6648610848e389db1fecf)
* Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (https://github.com/protocolbuffers/protobuf/commit/7d43131a0a3a2a7640208849eeac016c6c61374e)
* Breaking change: Removed obsolete/duplicate `setup.py` from Python. (https://github.com/protocolbuffers/protobuf/commit/8135fca851c76344392c7888e4eb647013b40479)
* Add new including_default_value_without_presence_fields to Python JSON serializer. (https://github.com/protocolbuffers/protobuf/commit/25c6d34d4ef6e19e490790b015764847f172a1a5)
* Adhere to PEP 8 (15127) (https://github.com/protocolbuffers/protobuf/commit/21ab7459ee43c0d5079e9f7708d453f68a5fd0e5)
PHP
* Don't break the trace (11311) (https://github.com/protocolbuffers/protobuf/commit/d67f921f90e3aa03f65c3e1e507ca7017c8327a6)
* Breaking change: Remove deprecated legacy class aliases. (https://github.com/protocolbuffers/protobuf/commit/60b80c697677e3fa59237eb8d72c97399771f050)
* Fix inconsistent timestamp json encode/decode (12396) (https://github.com/protocolbuffers/protobuf/commit/47e92cd689466a01ab128ac0bb02cfbde3a1fb46)
* Feat: more readable phpdoc escaping (11208) (https://github.com/protocolbuffers/protobuf/commit/f929439ccd19872d71f56050e6ba7af3cd7c753c)
Ruby
* Add bigdecimal to dependencies (16379) (https://github.com/protocolbuffers/protobuf/commit/d810ef6be77c079b890e92a20e5b37cfd8768a0b)
* Implement service & method descriptor lookup in Ruby (15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
* Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
* Ruby implement memsize functions for native types (10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e)
* Moved ObjectCache into an internal module. (https://github.com/protocolbuffers/protobuf/commit/f824f6d0d7337b193e5a6d277236b79706a6c319)
* [Ruby] Delegate difference, intersection, union from RepeatedField to Array (15652) (https://github.com/protocolbuffers/protobuf/commit/11eab86cc0ba1aecaa0dbb5e4a530cec274aa989)
* Move the RubyMessage.java JSON "include defaults" to use alwaysPrintFieldsWithNoPresence. (https://github.com/protocolbuffers/protobuf/commit/4d23fa068a5eed1284645ef0d5ed32068986068f)
* Increased the size of the error message buffer by 4x, to 511 bytes. (https://github.com/protocolbuffers/protobuf/commit/32a6f7a18c1bbf6c6eab3fa027bd0b33b62654d0)
Ruby C-Extension
* Implement service & method descriptor lookup in Ruby (15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
* Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
* Ruby implement memsize functions for native types (10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e)
* Moved ObjectCache into an internal module. (https://github.com/protocolbuffers/protobuf/commit/f824f6d0d7337b193e5a6d277236b79706a6c319)
* *See also UPB changes below, which may affect Ruby C-Extension.*
UPB (Python/PHP/Ruby C-Extension)
* Setup upb installation with cmake. (https://github.com/protocolbuffers/protobuf/commit/6898451f5e4c84e79a6f48ea6c46959960743970)
* Fix text-format delimited field handling (https://github.com/protocolbuffers/protobuf/commit/29c69ff00b58b60e67fcf40fd810009bd39b86c6)
* Print non-extension fields by field number order instead of .proto file order. (https://github.com/protocolbuffers/protobuf/commit/8612d5e771877123e7fb74d91aaef3912a870a9a)
* Implement service & method descriptor lookup in Ruby (15817) (https://github.com/protocolbuffers/protobuf/commit/2082ee8bb5a7966d7e921c848778eb0dec431d56)
* Implement edition 2023 support in all Ruby runtimes. (https://github.com/protocolbuffers/protobuf/commit/bca8fb6117cf24785edb238d96bffe2c3a6d7164)
* Adds mutable extension accessors to the codegen for upb C for getting mutable extension messages. (https://github.com/protocolbuffers/protobuf/commit/e8244da7c65cac3a410711fd324de73b78a645e7)
* Ruby implement memsize functions for native types (10291) (https://github.com/protocolbuffers/protobuf/commit/87cbdddbf0055d2dfeb87245984126fba7549d3e)
* Increased the size of the error message buffer by 4x, to 511 bytes. (https://github.com/protocolbuffers/protobuf/commit/32a6f7a18c1bbf6c6eab3fa027bd0b33b62654d0)
Conformance
* Added conformance test for unknown field ordering. (https://github.com/protocolbuffers/protobuf/commit/1f6580dd0ccc9adab41a033ada1d2c9e7fce82ff)
* Add editions-specific conformance tests (https://github.com/protocolbuffers/protobuf/commit/8ab39ed6f824d8915eefde0a74a7715213d9cbbf)
Other
* Add redirects for C++ and Java proto rules (https://github.com/protocolbuffers/protobuf/commit/9da1b86c30a12286f63501fe7eace2153ed2bc34)
* Add redirects for proto rules (https://github.com/protocolbuffers/protobuf/commit/d4d34abd7d66dc93c8f7f52f28411cd9c2867c29)
* Feat: automate publishing releases to Bazel Central Registry (16014) (https://github.com/protocolbuffers/protobuf/commit/d2b71b347df6c8af5c3ee1c833f41b7772e3f250)
* Add PrivacyInfo.xcprivacy (15557) (https://github.com/protocolbuffers/protobuf/commit/684660f025703afbc4775dedf9a0bf732b696cf1)