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