Ruby * Replace libc strdup usage with internal impl to restore musl compat (10818)
21.8
Other * Fix for grpc.tools 17995 & protobuf 7474 (handle UTF-8 paths in argumentfile) (10721)
C++ * 21.x No longer define no_threadlocal on OpenBSD (10743)
Java * Mark default instance as immutable first to avoid race during static initialization of default instances (10771)
Ruby * Auto capitalize enums name in Ruby (10454) (10763)
21.7
Java * 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. * This release addresses a [Security Advisory for Java users](https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-h4h5-3hr4-j3g2)
21.6
C++ * Reduce memory consumption of MessageSet parsing * This release addresses a [Security Advisory for C++ and Python users](https://github.com/protocolbuffers/protobuf/security/advisories/GHSA-8gq9-2x98-w8hf)
21.5
PHP * Added getContainingOneof and getRealContainingOneof to descriptor. * fix PHP readonly legacy files for nested messages
Python * Fixed comparison of maps in Python.
21.4
C++ * Reduce the required alignment of ArenaString from 8 to 4 (10298)