All Versions
38
Latest Version
Avg Release Cycle
23 days
Latest Release
454 days ago

Changelog History
Page 1

  • v4.0.0-rc2

    July 21, 2020
  • v4.0.0-rc1 Changes

    July 15, 2020

    Note: This release bumps the major version due to backward-incompatible changes in PHP.

    PHP is the only language that has breaking changes in this release.

    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.14.0 Changes

    November 13, 2020

    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)
  • v3.14.0-rc3

    November 12, 2020
  • v3.14.0-rc2

    November 11, 2020
  • v3.14.0-rc1

    November 06, 2020
  • v3.13.0

    August 15, 2020
  • v3.13.0-rc3

    August 13, 2020
  • v3.13.0.1

    October 08, 2020
  • v3.12.4

    July 29, 2020