Skip to content

Protocol Buffers v27.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@mkruskal-google mkruskal-google released this 18 Apr 18:31
· 84 commits to main since this release

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Compiler

  • 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++

  • [C++] 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)
  • Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (2699579)
  • Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, 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

  • 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)
  • Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (2699579)
  • Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, 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

  • C#: Optimize JSON parsing in JsonTokenizer (68e6e3e)
  • C#: 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)
  • C#: 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

  • 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)
  • Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (2699579)
  • Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (7d43131)
  • Breaking change: Removed obsolete/duplicate setup.py from Python. (8135fca)
  • Add new including_default_value_without_presence_fields to Python JSON serializer. (25c6d34)
  • Adhere to PEP 8 (#15127) (21ab745)

PHP

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

  • 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)

  • 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)

Conformance

  • Added conformance test for unknown field ordering. (1f6580d)
  • Add editions-specific conformance tests (8ab39ed)

Other

  • 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)