Announcements
* [Protobuf News](https://protobuf.dev/news/) may include additional announcements or pre-announcements for upcoming changes.
Bazel
* Add missing line to docstring after Args (19213) (https://github.com/protocolbuffers/protobuf/commit/6f310d5d88585e6badf12620fb18e11242c5b838)
* Fix proto_info_bzl (18918) (https://github.com/protocolbuffers/protobuf/commit/083de5faeb2d7a1940d1028c317a4a8bad60fe07)
* Use rules_cc everywhere in protobuf (https://github.com/protocolbuffers/protobuf/commit/ddadd0b3d674d775baa9ff4ab2f83ce369cca21d)
* Upgrade rules_cc to 0.0.13 (https://github.com/protocolbuffers/protobuf/commit/3dd483541ed66ceca3f4b876d938081c753ca5b7)
* Convert proto toolchain string to Label (https://github.com/protocolbuffers/protobuf/commit/aa181e28db6e5cc36580519b49a08d0ff7042dba)
* Prepare supporting targets for testing (https://github.com/protocolbuffers/protobuf/commit/a748b10c32365ead2641fd3a3ccfadfe04f3746b)
* Support --incompatible_enable_proto_toolchain_resolution (https://github.com/protocolbuffers/protobuf/commit/372ddb308be33fed837043a2446f7b2305dcb075)
* Move ProtoInfo and ProtoLangToolchainInfo from Bazel (https://github.com/protocolbuffers/protobuf/commit/426ca8a34a2871cbc777450b6d0c347a158217d7)
* Move java_{lite_}proto_library from Bazel repository (https://github.com/protocolbuffers/protobuf/commit/d77bdacc31294b930e16a0d3054c10cb28d601a0)
* Move proto_toolchain from rules_proto to protobuf (https://github.com/protocolbuffers/protobuf/commit/9f9cb7a10e5c49c2e81b8352292e4e84a5eb7cfa)
* Move proto_library from Bazel repository (https://github.com/protocolbuffers/protobuf/commit/3ff2cf05f341a2ebe9e4e79e59717f85cfd5d601)
* Move proto_common implementation from Bazel binary (https://github.com/protocolbuffers/protobuf/commit/b19fbe62bc4965b76f781fe632c2388a9974b9b4)
Compiler
* Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (https://github.com/protocolbuffers/protobuf/commit/07e489d98a4c445b0a9c56b07b195b258719ee82)
* Update protoc release to include editions language features proto for Go (19013) (https://github.com/protocolbuffers/protobuf/commit/63d966b0d270cbebb4681c0d4c905031284e0d2b)
* Introduce lifetimes for individual feature values. (https://github.com/protocolbuffers/protobuf/commit/0b6e768f07c4cde376783b964022ec7e1ff3e772)
* Windows - Fix handling of utf8 command line arguments (17854) (https://github.com/protocolbuffers/protobuf/commit/b9d1800df0f7ee41a7e24e2d16e31195eda6a698)
* Limit feature deprecation warnings to reduce noise. (https://github.com/protocolbuffers/protobuf/commit/5cd9a463f96478cc6203f02635368a7a8ecc22b3)
C++
* Fix C++ ifndef_guard printer to also convert "-" to "_". (https://github.com/protocolbuffers/protobuf/commit/7331b770978d55e6753a286187a511de86452e1a)
* Fix C++ codegen namespace printer to print closing namespaces in reverse order. (https://github.com/protocolbuffers/protobuf/commit/3bf9c400ec797b1b287bab3079e14b89995c8828)
* Fix raw_ptr.cc on exotic architectures (18193) (https://github.com/protocolbuffers/protobuf/commit/63f6262c93edfef482011cfdc9df014e376ace69)
* Fix cord handling in DynamicMessage and oneofs. (https://github.com/protocolbuffers/protobuf/commit/9e8b30c2135944d9d3a6e53b70e534581e2dbe2b)
* Fix packed reflection handling bug in edition 2023. (https://github.com/protocolbuffers/protobuf/commit/4c923285a32ebcb53ce2ba03144e50d4dbedaf7b)
* Add JsonStreamToMessage method (https://github.com/protocolbuffers/protobuf/commit/0259cc3980a29945af19bf80225611ff84b7eece)
* Introduce lifetimes for individual feature values. (https://github.com/protocolbuffers/protobuf/commit/0b6e768f07c4cde376783b964022ec7e1ff3e772)
* Insert software prefetches into merge functions. This improves performance when hardware prefetchers are disabled on AMD machines. (https://github.com/protocolbuffers/protobuf/commit/d99336559ed897f18fee879f0e39811b26be4c0c)
* Insert software prefetches into proto parsing functions. This improves performance when hardware prefetchers are disabled on AMD platforms. (https://github.com/protocolbuffers/protobuf/commit/8aa0add7d3ca89bd94a029c48c3a92f7c366a073)
* Add prefetching of subsequent extensions in ExtensionSet::ForEach. (https://github.com/protocolbuffers/protobuf/commit/9b019ee2711fdeb29917bfb8c4c1292635c35aa7)
* Remove the AnyMetadata class and use free functions instead. (https://github.com/protocolbuffers/protobuf/commit/920d5c33d4d521e075d0418496379ff9d12f9cec)
* Add `[[deprecated]]` attribute when generating enums and classes. (https://github.com/protocolbuffers/protobuf/commit/23aada230b2478c7a07fe7612489eb8e79b9c379)
* Use linear search instead of binary search in flat mode of ExtensionSet. (https://github.com/protocolbuffers/protobuf/commit/0ed61f0b15343d6450a55413748aa71a6ded0842)
* Prepare `MessageLite::GetTypeName` to be upgraded to return (https://github.com/protocolbuffers/protobuf/commit/30a8ef5008f9dec3f4270d3139a318099a7fc8ac)
* Limit feature deprecation warnings to reduce noise. (https://github.com/protocolbuffers/protobuf/commit/5cd9a463f96478cc6203f02635368a7a8ecc22b3)
* Add Compiler Condition to use inline assembly optimizations with ARM64 for Compatibility with MSVC (17671) (https://github.com/protocolbuffers/protobuf/commit/c5f623184dc91e5c5bc58adb91b93f24e4467282)
* Enable small object optimization (SOO) for RepeatedField in order to reduce data indirections. (https://github.com/protocolbuffers/protobuf/commit/e2525e6b365459f9183cb21815f74b4bba205481)
* Return backing array memory to arena in ExtensionSet. (https://github.com/protocolbuffers/protobuf/commit/5ac8ee1a2067d1abab015bdd64e8102af799cc74)
* In edition 2024, `Enum_Name(value)` functions return `absl::string_view` by default. (https://github.com/protocolbuffers/protobuf/commit/e3fa6aac29f72e27f9db73db26fb71f24509ab7c)
* Add Prefetchers to Proto Copy Construct to help address load misses (https://github.com/protocolbuffers/protobuf/commit/cdb723815b66e3bac2c9ca87dc9f8322488a6bc9)
* Reduced nesting in GenerateByteSize: slight readability improvements in generated code. (https://github.com/protocolbuffers/protobuf/commit/162a74067058a298ea1dc9ed7c0791b4c6abb69a)
* Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (https://github.com/protocolbuffers/protobuf/commit/d0e49dfe3161714046a4ee2aeafba133b171e26f)
* Update the comment of TextFormat::Printer::RegisterMessagePrinter that the method takes ownerhip of the `printer` pointer. (https://github.com/protocolbuffers/protobuf/commit/d91116176642f24ef1b2c2431e7c5c3150bbad68)
* Prepare the code for migrating return types from `const std::string&` to (https://github.com/protocolbuffers/protobuf/commit/e13b8e999b3922d0633802c7f90e39af50a31d76)
Java
* Remove deprecation warnings for Timestamp and Duration add/subtract/between that we do not yet have alternatives to. (https://github.com/protocolbuffers/protobuf/commit/f606c138a55b68bbc009281918023f7ede58720b)
* [29.x] Add missing java load (19016) (https://github.com/protocolbuffers/protobuf/commit/bb287be772454d63b411b73d60b1d92daa879f2e)
* Give Kotlin jars an OSGi Manifest (18812) (https://github.com/protocolbuffers/protobuf/commit/0c51ebac875657ecf6f8cca3d5463c23eb7d8b00)
* Re-export includingDefaultValueFields in deprecated state for important Cloud customer. (https://github.com/protocolbuffers/protobuf/commit/7321b2fd9a787dd08cd3cf8b25e8ccd9e479c60c)
* Restore compatibility with 3.22 gencode by re-adding mutableCopy helpers (https://github.com/protocolbuffers/protobuf/commit/1b1e90b83101314250f1fec3b6989b20606d0ecb)
* Speed up CodedOutputStream by extracting rarely-executed string formatting code (https://github.com/protocolbuffers/protobuf/commit/f8f5136c427ac1cbd5184bc57200e36c7e4bf82e)
* Return constant Value objects for true, false, and "" (https://github.com/protocolbuffers/protobuf/commit/4fbb0c5eedf5658c5f3fac574b8bb0d3b3664621)
* Optimise CodedOutputStream.ArrayEncoder.writeFixed32NoTag/writeFixed64NoTag (https://github.com/protocolbuffers/protobuf/commit/a51f98ce0c211492d070970f214a6eefb6aadf63)
* CodedOutputStream: avoid updating position to go beyond end of array. (https://github.com/protocolbuffers/protobuf/commit/76ab5f2b109fbd03c160b27a41935ad132287c88)
* Convert IndexOutOfBoundsException to OutOfSpaceException in UnsafeDirectNioEncoder (https://github.com/protocolbuffers/protobuf/commit/0e75d92cceeaf615794b91c4ab847eeff9935290)
* Suppress ReturnValueIgnored errorprone issues (https://github.com/protocolbuffers/protobuf/commit/bbbc7b967113ec7f5da3950c7c97e832507ffe96)
* Fix packed reflection handling bug in edition 2023. (https://github.com/protocolbuffers/protobuf/commit/4c923285a32ebcb53ce2ba03144e50d4dbedaf7b)
* Move cc_proto_library from Bazel repository (https://github.com/protocolbuffers/protobuf/commit/52544482bf3da31382a8b7a32b766ef644dc0611)
* Protobuf Lite ArrayLists: Defer allocating backing array until we have some idea how much to allocate. (https://github.com/protocolbuffers/protobuf/commit/05a8a4012351b07010afbc76892fe7919d0cb964)
* Allocate correct-sized array when parsing packed fixed-width primitives (https://github.com/protocolbuffers/protobuf/commit/4e8469cb456ad25d4dd448079bb46a938ad6e306)
* Bugfix: Make extensions beyond n=16 immutable. (https://github.com/protocolbuffers/protobuf/commit/ee419f22e0eec21243540d4b7ffe40bd194ed293)
* Reserve capacity in ProtobufArrayList when calling Builder.addAllRepeatedMessage(Collection) (https://github.com/protocolbuffers/protobuf/commit/e3cc31a12eaddcfaaa5a27c272e240b6cbd985c8)
* Avoid allocating iterators when calling Message.Builder.addAllFoo(RandomAccess List) (https://github.com/protocolbuffers/protobuf/commit/bd1887e436d2c6cc35db1eede8ebbe1bee1fb78f)
* Remove the AnyMetadata class and use free functions instead. (https://github.com/protocolbuffers/protobuf/commit/920d5c33d4d521e075d0418496379ff9d12f9cec)
* Add `[[deprecated]]` attribute when generating enums and classes. (https://github.com/protocolbuffers/protobuf/commit/23aada230b2478c7a07fe7612489eb8e79b9c379)
* 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. (https://github.com/protocolbuffers/protobuf/commit/df8a11e2666ad2940b0483c00d4aff586315b9a0)
* Implement a mechanism to control the output format of Message.toString within a Runnable instance. (https://github.com/protocolbuffers/protobuf/commit/737803eec49b0ae9d22dd116fcb9fc0064045bad)
* Fix `TextFormat.Parser` to appropriately handle unknown values for open enums (https://github.com/protocolbuffers/protobuf/commit/df1aad4eb80afbac12b824be233759ff40ab984c)
* Inline ArrayList's array into SmallSortedMap (https://github.com/protocolbuffers/protobuf/commit/910f62779fa86a3a1f653d0d34bb7d24e42f64be)
* Deprecated unused/obsolete mutable APIs, to be removed in next breaking change. (https://github.com/protocolbuffers/protobuf/commit/e889b0be5402b0ac3cc87ae3cd65d053fd1474ec)
Kotlin
* Give Kotlin jars an OSGi Manifest (18812) (https://github.com/protocolbuffers/protobuf/commit/0c51ebac875657ecf6f8cca3d5463c23eb7d8b00)
* Support building //java with bzlmod (https://github.com/protocolbuffers/protobuf/commit/507ba36e299599ceca0c537aa95e416c996f1fcc)
* Replace deprecated use of `toBytes()` with `Character` property `.code` (18236) (https://github.com/protocolbuffers/protobuf/commit/5d9deab879c03293b11d7134e005f1ac0635d2ac)
Csharp
* Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (https://github.com/protocolbuffers/protobuf/commit/07e489d98a4c445b0a9c56b07b195b258719ee82)
Objective-C
* [ObjC] Make debug runtime tell developers to update their generated code. (https://github.com/protocolbuffers/protobuf/commit/cdd3cf7ed4a34d9b01065ffef41988c1aefc663c)
* [ObjC] Issue stderr warnings for deprecated generation options. (https://github.com/protocolbuffers/protobuf/commit/e9140a10eca0688fcc1a03507f8b522b9bbdc50e)
* [ObjC] Deprecate GPBUnknownFieldSet and related apis. (https://github.com/protocolbuffers/protobuf/commit/d794139f09230bed72ec765426854723deac012d)
* [ObjC] Deprecate GPBTextFormatForUnknownFieldSet(). (https://github.com/protocolbuffers/protobuf/commit/55e997ea222561c606ba7c59706e6377776c5d9b)
Python
* Fix a python bug when assign an empty Struct at creation. (18977) (https://github.com/protocolbuffers/protobuf/commit/bb0d57512d7731164837f57274e23eb411f80ccf)
* Add a deprecation warning to py_proto_library (19032) (https://github.com/protocolbuffers/protobuf/commit/53cde641d941293cde7dd8fe5b7e429ee52658bd)
* Load Python rules everywhere in protobuf (https://github.com/protocolbuffers/protobuf/commit/a18f0de47c2c650f5c57e6cca80ee3bded76b19a)
* Fix cord handling in DynamicMessage and oneofs. (https://github.com/protocolbuffers/protobuf/commit/9e8b30c2135944d9d3a6e53b70e534581e2dbe2b)
* Fix packed reflection handling bug in edition 2023. (https://github.com/protocolbuffers/protobuf/commit/4c923285a32ebcb53ce2ba03144e50d4dbedaf7b)
* Fix ContainerBase::DeepCopy to not modify the source object. (https://github.com/protocolbuffers/protobuf/commit/9fa1f4f9bb74776ee65847ca960a1f023eac3ebe)
* Introduce lifetimes for individual feature values. (https://github.com/protocolbuffers/protobuf/commit/0b6e768f07c4cde376783b964022ec7e1ff3e772)
* Nextgen Proto Pythonic API: Add any.py (https://github.com/protocolbuffers/protobuf/commit/dd95e5b1fa65b06d9206c016b1d53f73abd9da44)
* Add test that tries to parse a JSON string that exceeds the recursion limit. (https://github.com/protocolbuffers/protobuf/commit/5a224554ebe3937577406a7e1099b797f5b10dba)
* Raise warnings for deprecated python cpp extension GetDebugString(). (https://github.com/protocolbuffers/protobuf/commit/b70c4b0c19dd4f8c73181320b060682ff9f1eebd)
* Nextgen Proto Pythonic API: Add duration.py (https://github.com/protocolbuffers/protobuf/commit/903c3f15b04d99ab88cee53e4cec9464ef292bce)
* Nextgen Proto Pythonic API: Add timestamp.py (https://github.com/protocolbuffers/protobuf/commit/ee26f2749341091b88c661734cdd5f0737587ce5)
* -Remove service.py usages in builder (https://github.com/protocolbuffers/protobuf/commit/2967c521a60241c35fb822c1661618493f824dda)
* Raise warnings for deprecated google/protobuf/reflection.py APIs. (https://github.com/protocolbuffers/protobuf/commit/55705f85db9a66da8a3dcbe18b4298594fa0dd6d)
PHP
* Fix: do not throw deprecated warning on field getters for default values (17788) (https://github.com/protocolbuffers/protobuf/commit/6d84da5e2d42a8c83373c0bc6d7ed0ca6f78aade)
PHP C-Extension
* Fixed non-conformance in JSON parsing for empty strings in numeric fields. (19259) (https://github.com/protocolbuffers/protobuf/commit/b69ea96ef9c11e557a19d971b1ef10a8732c7013)
* *See also UPB changes below, which may affect PHP C-Extension.*
Ruby
* Fixed non-conformance in JSON parsing for empty strings in numeric fields. (19259) (https://github.com/protocolbuffers/protobuf/commit/b69ea96ef9c11e557a19d971b1ef10a8732c7013)
* Remove codes for unsupported Ruby (17353) (https://github.com/protocolbuffers/protobuf/commit/184f3a37e9bee6040c316e38ee24caa81de5c087)
* [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (17253) (https://github.com/protocolbuffers/protobuf/commit/b07e4b1eeb2f530ce4a2a980aa1f01289b8325ff)
Ruby C-Extension
* Fixed non-conformance in JSON parsing for empty strings in numeric fields. (19259) (https://github.com/protocolbuffers/protobuf/commit/b69ea96ef9c11e557a19d971b1ef10a8732c7013)
* Fix a potential Ruby-upb use of uninitialized memory. (https://github.com/protocolbuffers/protobuf/commit/4d75c8224ac04957b997719700a8757173bbab19)
* [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (17253) (https://github.com/protocolbuffers/protobuf/commit/b07e4b1eeb2f530ce4a2a980aa1f01289b8325ff)
* *See also UPB changes below, which may affect Ruby C-Extension.*
UPB (Python/PHP/Ruby C-Extension)
* Fixed non-conformance in JSON parsing for empty strings in numeric fields. (19259) (https://github.com/protocolbuffers/protobuf/commit/b69ea96ef9c11e557a19d971b1ef10a8732c7013)
* Load Python rules everywhere in protobuf (https://github.com/protocolbuffers/protobuf/commit/a18f0de47c2c650f5c57e6cca80ee3bded76b19a)
* Fix a potential Ruby-upb use of uninitialized memory. (https://github.com/protocolbuffers/protobuf/commit/4d75c8224ac04957b997719700a8757173bbab19)
* Fixed `NAN`/`INFINITY` definitions to work on Windows 11 SDK. (https://github.com/protocolbuffers/protobuf/commit/0309d86d3175cb3fb82d37150e6eff90b11bed77)
Other
* Fix typo in BCR maintainer name config for acozzette (19307) (https://github.com/protocolbuffers/protobuf/commit/02cffa463c3c38316467e168e13972da003fe58e)
* Remove Bazel 6 in BCR presubmits (19309) (https://github.com/protocolbuffers/protobuf/commit/7537b0387c3c620ccbe40477743e3352f39c9b9a)
* Upgrade rules_cc 0.0.15 and rules_java 8.3.1 (19215) (https://github.com/protocolbuffers/protobuf/commit/fb8ee79637773d51e6e15679c1509aed2f9bf9d0)
* Upgrade rules_java and remove experimental_google_legacy_api flag (18889) (https://github.com/protocolbuffers/protobuf/commit/f25389b5db127e23d49fb1140d42ce67a6b9f415)
* Replace use of C++17 with disabling a warning (https://github.com/protocolbuffers/protobuf/commit/111584f24bdec9c784c6cd3b9cb3828365f6da4c)
* Load Shell rules everywhere in protobuf (https://github.com/protocolbuffers/protobuf/commit/1822c8a6a22230d5124e43d7bb73d5831fdb93f3)
* Fix Bazel dependency cycle issue affecting Kythe (18768) (https://github.com/protocolbuffers/protobuf/commit/6df33a4b8a105d4382c212f46128e1539a3fae6a)
* Remove rules_rust dependency (https://github.com/protocolbuffers/protobuf/commit/4329b89321f2dbfde6dc9ffc62405daf5b33d67d)
* Remove release branch staleness tests. (https://github.com/protocolbuffers/protobuf/commit/3551ee31b8ed544bfb2ae676f58da0851ffd8a54)
* Remove javaopts requiring java8 in non-release builds. (https://github.com/protocolbuffers/protobuf/commit/98beac0b3c0335f3f638d076f7584ff9785d4644)
* Docs: add nebius.ai custom options to registry (18297) (https://github.com/protocolbuffers/protobuf/commit/e5d2dbd45a6deac2f39e2cea7a05c2120f3753b5)
* Protobuf-mode: add edition keyword for syntax highlighting (https://github.com/protocolbuffers/protobuf/commit/138451296bf4101f992faa215a1899f3b9ec29e7)