Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v3.15.0-rc1

10 Feb 19:17
Compare
Choose a tag to compare
Pre-release
Added PHP changes for 3.15.0 into package.xml

Protocol Buffers v3.14.0

13 Nov 23:48
Compare
Choose a tag to compare

Protocol Compiler

  • The proto compiler no longer requires a .proto filename when it is not
    generating code.
  • Added flag --deterministic_output to protoc --encode=....
  • Fixed deadlock when using google.protobuf.Any embedded in aggregate options.

C++

  • Arenas are now unconditionally enabled. cc_enable_arenas no longer has
    any effect.
  • Removed inlined string support, which is incompatible with arenas.
  • Fix a memory corruption bug in reflection when mixing optional and
    non-optional fields.
  • Make SpaceUsed() calculation more thorough for map fields.
  • Add stack overflow protection for text format with unknown field values.
  • FieldPath::FollowAll() now returns a bool to signal if an out-of-bounds
    error was encountered.
  • Performance improvements for Map.
  • Minor formatting fix when dumping a descriptor to .proto format with
    DebugString.
  • UBSAN fix in RepeatedField (#2073).
  • When running under ASAN, skip a test that makes huge allocations.
  • Fixed a crash that could happen when creating more than 256 extensions in
    a single message.
  • Fix a crash in BuildFile when passing in invalid descriptor proto.
  • Parser security fix when operating with CodedInputStream.
  • Warn against the use of AllowUnknownExtension.
  • Migrated to C++11 for-range loops instead of index-based loops where
    possible. This fixes a lot of warnings when compiling with -Wsign-compare.
  • Fix segment fault for proto3 optional (#7805)
  • Adds a CMake option to build libprotoc separately (#7949)

Java

  • Bugfix in mergeFrom() when a oneof has multiple message fields.
  • Fix RopeByteString.RopeInputStream.read() returning -1 when told to read
    0 bytes when not at EOF.
  • Redefine remove(Object) on primitive repeated field Lists to avoid
    autoboxing.
  • Support "\u" escapes in textformat string literals.
  • Trailing empty spaces are no longer ignored for FieldMask.
  • Fix FieldMaskUtil.subtract to recursively remove mask.
  • Mark enums with @java.lang.Deprecated if the proto enum has option
    deprecated = true;.
  • Adding forgotten duration.proto to the lite library (#7738)

Python

  • Print google.protobuf.NullValue as null instead of "NULL_VALUE" when it is
    used outside WKT Value/Struct.
  • Fix bug occurring when attempting to deep copy an enum type in python 3.
  • Add a setuptools extension for generating Python protobufs (#7783)
  • Remove uses of pkg_resources in non-namespace packages. (#7902)
  • [bazel/py] Omit google/init.py from the Protobuf runtime. (#7908)
  • Removed the unnecessary setuptools package dependency for Python package (#7511)
  • Fix PyUnknownFields memory leak (#7928)

PHP

  • Added support for "==" to the PHP C extension (#7883)
  • Added == operators for Map and Array. (#7900)
  • Native C well-known types (#7944)
  • Optimized away hex2bin() call in generated code (#8006)
  • New version of upb, and a new hash function wyhash in third_party. (#8000)
  • add missing hasOneof method to check presence of oneof fields (#8003)

Go

  • Update go_package options to reference google.golang.org/protobuf module.

C#

  • annotate ByteString.CopyFrom(ReadOnlySpan) as SecuritySafeCritical (#7701)
  • Fix C# optional field reflection when there are regular fields too (#7705)
  • Fix parsing negative Int32Value that crosses segment boundary (#8035)

Javascript

  • JS: parse (un)packed fields conditionally (#7379)

Protocol Buffers v3.14.0-rc3

12 Nov 22:43
Compare
Choose a tag to compare
Pre-release
Update protobuf version

Protocol Buffers v3.14.0-rc2

11 Nov 04:45
Compare
Choose a tag to compare
Pre-release
Update protobuf version

Protocol Buffers v3.14.0-rc1

06 Nov 00:31
Compare
Choose a tag to compare
Pre-release
Update protobuf version

Protocol Buffers v3.13.0

15 Aug 00:40
Compare
Choose a tag to compare

PHP

  • The C extension is completely rewritten. The new C extension has significantly
    better parsing performance and fixes a handful of conformance issues. It will
    also make it easier to add support for more features like proto2 and proto3 presence.
  • The new C extension does not support PHP 5.x, which is the reason for the major
    version bump. PHP 5.x users can still use pure-PHP.

C++

  • Removed deprecated unsafe arena string accessors
  • Enabled heterogeneous lookup for std::string keys in maps.
  • Removed implicit conversion from StringPiece to std::string
  • Fix use-after-destroy bug when the Map is allocated in the arena.
  • Improved the randomness of map ordering
  • Added stack overflow protection for text format with unknown fields
  • Use std::hash for proto maps to help with portability.
  • Added more Windows macros to proto whitelist.
  • Arena constructors for map entry messages are now marked "explicit"
    (for regular messages they were already explicit).
  • Fix subtle aliasing bug in RepeatedField::Add
  • Fix mismatch between MapEntry ByteSize and Serialize with respect to unset
    fields.

Python

  • JSON format conformance fixes:
    • Reject lowercase t for Timestamp json format.
    • Print full_name directly for extensions (no camelCase).
    • Reject boolean values for integer fields.
    • Reject NaN, Infinity, -Infinity that is not quoted.
    • Base64 fixes for bytes fields: accept URL-safe base64 and missing padding.
  • Bugfix for fields/files named "async" or "await".
  • Improved the error message when AttributeError is returned from getattr
    in EnumTypeWrapper.

Java

  • Fixed a bug where setting optional proto3 enums with setFooValue() would
    not mark the value as present.
  • Add Subtract function to FieldMaskUtil.

C#

  • Dropped support for netstandard1.0 (replaced by support for netstandard1.1).
    This was required to modernize the parsing stack to use the Span<byte>
    type internally. (#7351)
  • Add ParseFrom(ReadOnlySequence<byte>) method to enable GC friendly
    parsing with reduced allocations and buffer copies. (#7351)
  • Add support for serialization directly to a IBufferWriter<byte> or
    to a Span<byte> to enable GC friendly serialization.
    The new API is available as extension methods on the IMessage type. (#7576)
  • Add GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE define to make
    generated code compatible with old C# compilers (pre-roslyn compilers
    from .NET framework and old versions of mono) that do not support
    ref structs. Users that are still on a legacy stack that does
    not support C# 7.2 compiler might need to use the new define
    in their projects to be able to build the newly generated code. (#7490)
  • Due to the major overhaul of parsing and serialization internals (#7351 and #7576),
    it is recommended to regenerate your generated code to achieve the best
    performance (the legacy generated code will still work, but might incur
    a slight performance penalty).

v3.13.0-rc3

13 Aug 18:17
Compare
Choose a tag to compare
v3.13.0-rc3 Pre-release
Pre-release
Update protobuf version

Protocol Buffers v3.12.4

29 Jul 00:03
Compare
Choose a tag to compare
Update protobuf version

Protocol Buffers v3.12.3

03 Jun 01:17
31ebe2a
Compare
Choose a tag to compare

Objective-C

  • Tweak the union used for Extensions to support old generated code. #7573

Protocol Buffers v3.12.2

26 May 23:36
Compare
Choose a tag to compare

C++

  • Simplified the template export macros to fix the build for mingw32. (#7539)

Objective-C

  • Fix for the :protobuf_objc target in the Bazel BUILD file. (#7538)