Skip to content

Protocol Buffers v3.14.0

Compare
Choose a tag to compare
@acozzette acozzette released this 13 Nov 23:48
· 2 commits to 3.14.x since this release

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)