Skip to content

Releases: zhangskz/protobuf

Draft for audit

12 Dec 18:09
Compare
Choose a tag to compare
Draft for audit Pre-release
Pre-release

[ACTION REQUIRED] Audit is required to determine if the following changes should be included in the release notes. Usually these were merged without Copybara.

For 22.0, this also includes changes predating RELEASE_NOTES tag.

C++

  • Begin emitting semantic metadata for some C++ proto features. (2880fef)

Java

  • Add "public" modifier to Kotlin generated code (9b37daf)
  • Stop generating an override for getUnknownFields() the GeneratedMessage version (ce7a02c)
  • Document cleanups that should be done in a not-too-distant breaking-change (5815aa3)
  • Add template comment and package to previously empty generated kotlin proto files. (9dfe7e9)
  • Add exemplar variants of the Java Any.is() and Any.unpack() methods. (60b7149)
  • Use bit-field int values in buildPartial to skip work on unset groups of fields. (2326aef)

Kotlin

  • Add template comment and package to previously empty generated kotlin proto files. (9dfe7e9)

Csharp

  • Pre-emptively suppress target framework EOL warnings (e2ea242)
  • Removed Java files from file_list.bzl and replace it with directory-based renames. (e71376e)
  • Sync C# files to Piper (1792a32)

Objective-C

  • [ObjC] Let Xcode 14 update the project settings (d0c1a63)
  • [ObjC] Update generation to include the new closed enum information. (4a12247)
  • [ObjC] Avoid warning from Xcode 14. (899c14a)
  • [ObjC] Mark the syntax on FileDescriptor as deprecated. (c79832b)
  • [ObjC] Add the concept of a closed enum. (7bb699b)
  • [ObjC] Minor cleanups for the descriptor startup. (3a74266)
  • [ObjC] Bring back the explicit getter for enumDescriptor. (47862bb)
  • Enforce GPBFieldHasEnumDescriptor always being set. (7140f6f)
  • Block direct creation of Descriptors. (38fb108)
  • [ObjC] Remove some stale comments about proto3 and unknown fields. (d4e1327)
  • Add exemplar variants of the Java Any.is() and Any.unpack() methods. (60b7149)
  • Speed up the build a small bit. (2fda7af)
  • ObjC Cleanups. (46d1145)
  • Remove custom HasPreservingUnknownEnumSemantics method. (72b22ed)

Python

  • Remove _SetType from python api_implementation.py (24743cd)
  • Copybara import of the project: (21815fa)
  • Copybara import of the project: (c1a42b3)
  • Use has_presence instead of syntax check in text_format. (f6f7046)
  • Added is_closed to EnumDescriptor in protobuf python (da9de8d)
  • use FieldDescriptor.has_presence instead of file.syntax in python_message.py (9b725fb)
  • Enable the Copybara sync for all files. (0ff2656)
  • See also UPB changes below, which may affect Python.

PHP

  • Update package.xml to include link to specific release notes. (35993fe)
  • See also UPB changes below, which may affect PHP.

Ruby

  • Internal change to syncing (glob the "compiler" dir) (42cc7c6)
  • Enable the Copybara sync for all files. (0ff2656)
  • See also UPB changes below, which may affect Ruby.

Other

  • Update version.json to: 21.11-dev (06776db)
  • Remove php 7.4 installation (4465c09)
  • Prohibit homebrew from automatically updating packages (7e6c984)
  • Updating changelog (74dae8f)
  • Standardise Link-Format (4c8a128)
  • Update third_party.md (4e00cf3)
  • Copybara import of the project: (09f4901)
  • proto2::Map improvements (d4adb43)
  • Use ARM-optimized varint decoding functions with table-driven parser. (0e7d311)
  • Copybara import of the project: (d70b5c5)
  • Fix missing google::protobuf::RepeatedPtrField<std::string> issue in GCC (225b936)
  • Copybara import of the project: (f06f81f)
  • Fix CODEOWNERS (e1b264e)
  • Update auto-generation script to handle well-known types (f1998d9)
  • Make CMake test_util and lite_test_util mutually exclusive (57a8846)
  • Make the CMake targets for test_util and lite_test_util independent (7043b88)
  • Update CMake file generation to avoid including Bazel-specific WKT paths (4ee1f52)
  • Update cc_dist_library() to include transitive sources (b146519)
  • Add a staleness test for the well-known types (f63f758)
  • Remove an incorrect comment about the Python struct module. (9fe9adf)
  • Removed the Mergeable check (e29fbd4)
  • Add a debug-only check for depth_ match, to catch a problem that is difficult (dc8c980)
  • Test for recursion depth earlier so we can return an appropriate error and keep (54cd586)
  • Call ParseVarint with a pointer to the specific result instead of always passing in a uint64_t * when possible. (411cba1)

UPB

Read more

Protocol Buffers v22.0-rc1_qa (Draft as of commit f3f069ce68305261d0306158e9c07eb0e9129366)

18 Jan 19:38
240986d
Compare
Choose a tag to compare

Announcements

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

Compiler

C++

  • Remove MOA logic for constructor/destructor path. (protocolbuffers@f7af94c)
  • No longer define no_threadlocal on OpenBSD (protocolbuffers#10610)
  • CMake: Enable projects to set the C++ version (protocolbuffers#10464)
  • Upgrade third_party/googletest submodule to current main branch (protocolbuffers#10393)
  • Remove all autotools usage (protocolbuffers#10132)
  • CMake: use add_compile_options instead of add_definitions for compile options (protocolbuffers#10293)
  • Fix protocolbuffers#9947: make the ABI identical between debug and non-debug builds (protocolbuffers#10271)
  • Allow for CMAKE_INSTALL_LIBDIR to be absolute (protocolbuffers#10090)
  • Add header search paths to protobuf-c++ spec (protocolbuffers#10024)
  • Cpp_generated_lib_linked support is removed in protoc
  • Reduced .pb.o object file size slightly by explicitly instantiating
  • Add C++20 keywords guarded by PROTOBUF_FUTURE_CPP20_KEYWORDS
  • Fixed crash in ThreadLocalStorage for pre-C++17 compilers on 32-bit ARM.
  • Clarified that JSON API non-OK statuses are not a stable API.
  • Added a default implementation of MessageDifferencer::Reporter methods.
  • Proto2::MapPair is now an alias to std::pair.
  • Hide C++ RepeatedField::UnsafeArenaSwap
  • Use table-driven parser for reflection based objects.
  • Update Map's InternalSwap() to take a pointer to the other Map.
  • Add ARM-optimized Varint decoding functions.
  • Minor optimization for parsing groups
  • Declare ReflectiveProtoHook class
  • Reduce size of VarintParse code in protocol buffers, by calling the shared
  • Avoid inlining some large heavily duplicated routines in repeated_ptr_field.h
  • Add ReflectiveProtoHook to Reflection.
  • Turns on table-driven parser for reflection based objects.
  • Save code space by avoiding inlining of large-in-aggregate code-space MessageLite::~MessageLite destructor.
  • Undefine the macro linux when compiling protobuf
  • Reduce memory consumption of MessageSet parsing.
  • Save code space by avoiding inlining of large-in-aggregate code-space MessageLite::~MessageLite destructor.
  • Breaking change: delete Arena::Init
  • Make a PROTOBUF_POISON/UNPOISON to reduce noise in the source
  • Put alignment functions in "arena_align.h"
  • Split off cleanup arena functions into "arena_cleanup.h"
  • Fix signed / unsigned match in CHECK_EQ
  • Kill Atomic<>. it's not pulling it's weight
  • Move AllocationPolicy out of arena_impl, and unify arena_config for bazel
  • Fix failure case in table-driven parser.
  • Add a new JSON parser.
  • Removed old JSON parsing code.
  • Introduce the Printer::{SetRedactDebugString,SetRandomizeDebugString} private flags.
  • Introduce global flags to control Printer::{SetRedactDebugString, SetRandomizeDebugString}.
  • Proto3 string fields no longer trigger clang-tidy warning bugprone-branch-clone.
  • Fix the API of DescriptorUpgrader::set_allow_unknown_dependencies to set to True always, and to populate into the DescriptorPool as well.
  • Report line numbers consistently in text-format deprecated-field warnings.
  • Reserve C++20 keywords
  • Fixed C++ code generation for protos that use int32_t, uint32_t, int64_t, uint64_t, size_t as field names.
  • Annotate generated C++ public aliases for enum types.
  • Change default arena max block size from 8K to 32K.

Java

  • Expect fail when serialize inf and nan for Value.number_value in json format. fixes protocolbuffers#11259 (protocolbuffers@ca1cb1b)
  • Create a helper function that can make a mutable copy of any ProtobufList (protocolbuffers@5669606)
  • Main 202212161220 (protocolbuffers#11340) (protocolbuffers@1697e45)
  • Add debug_redact field option to protobuf. (protocolbuffers@9238c48)
  • Remove unused package private class ProtobufLists. (protocolbuffers@b51c551)
  • Mark UnmodifiableLazyStringList deprecated. UnmodifiableLazyStringList is unnecessary and will be removed in a future release. (protocolbuffers@9595cbb)
  • Make emptyList public and mark the public EMPTY field as deprecated. (protocolbuffers@c658e27)
  • Enable Text format parser to skip unknown short-formed repeated fields. (protocolbuffers@6dbd413)
  • Expose internal setExtension method for Kotlin (protocolbuffers@33d1070)
  • Mark default instance as immutable first to avoid race during static initialization of default instances. (protocolbuffers#10770)
  • Add serialVersionUID to ByteString and subclasses (protocolbuffers#10718)
  • Fix serialization warnings in generated code when compiling with Java 18 and above (protocolbuffers#10561)
  • Fix Timestamps fromDate for negative 'exact second' java.sql.Timestamps (protocolbuffers#10321)
  • Fix Timestamps.fromDate to correctly handle java.sql.Timestamps before unix epoch (protocolbuffers#10126)
  • Performance improvement for repeated use of FieldMaskUtil#merge by caching
  • Optimized Java proto serialization gencode for protos having many extension ranges with few fields in between.
  • More thoroughly annotate public generated code in Java lite protocol buffers.
  • Fixed Bug in proto3 java lite repeated enum fields. Failed to call copyOnWrite before modifying previously built message. Causes modification to already "built" messages that should be immutable.
  • Fix Java reflection serialization of empty packed fields.
  • Refactoring java full runtime to reuse sub-message builders and prepare to migrate parsing logic from parse constructor to builder.
  • Fix TextFormat parser to build up recurring (but supposedly not repeated) sub-messages directly from text rather than building a new sub-message and merging the fully formed message into the existing field.
  • Make message-type extensions merge from wire-format instead of building up instances and merging afterwards. This has much better performance.
  • Change the Lite runtime to prefer merging from the wireformat into mutable messages rather than building up a new immutable object before merging. This way results in fewer allocations and copy operations.
  • Move proto wireformat parsing functionality from the private "parsing constructor" to the Builder class.
  • Refactoring java full runtime to reuse sub-message builders and prepare to migrate parsing logic from parse constructor to builder.
  • Move proto wireformat parsing functionality from the private "parsing constructor" to the Builder class.
  • Change the Lite runtime to prefer merging from the wireformat into mutable messages rather than building up a new immutable object before merging. This way results in fewer allocations and copy operations.
  • Make message-type extensions merge from wire-format instead of building up instances and merging afterwards. This has much better performance.
  • Fix TextFormat parser to build up recurring (but supposedly not repeated) sub-messages directly from text rather than building a new sub-message and merging the fully formed message into the existing field.
  • Fix bug in nested builder caching logic where cleared sub-field builders would remain dirty after a clear and build in a parent layer. protocolbuffers#10624
  • Performance test for TextFormat to verify fix for GHSA-h4h5-3hr4-j3g2

Kotlin

Csharp

Read more