Skip to content

Protocol Buffers v27.0

Compare
Choose a tag to compare
@sbenzaquen sbenzaquen released this 23 May 14:41
· 1776 commits to main since this release

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 to java/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() and GetRepeatedStringView() 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 and always_print_without_presence_fields to alwaysPrintFieldsWithNoPresence 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() in DescriptorBuilder 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 and ExtensionSize 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 to java_. This may break existing references to gencode for extensions named java. (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 to java/core/srce/main/resources (274bc7f)
  • Add java_features.proto to kotlin_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_without_presence_fields to alwaysPrintFieldsWithNoPresence 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 current includingDefaultValueFields. (58baeb4)

Kotlin

  • Add java_features.proto to kotlin_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 .NET JsonTextTokenizer. (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 and always_print_without_presence_fields to alwaysPrintFieldsWithNoPresence 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

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 to Array (#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 to protobuf_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)