Go support for Google's protocol buffers
New Features
Protobuf editions are fully supported. You can now use edition = "2023"
in .proto files together with the proto-gen-go
. Edition2023 does not introduce any new features but can be used to replace syntax "proto2/3"
. Future editions might introduce new features. See https://protobuf.dev/editions/overview/ for more details on protobuf editions.
Documentation Various smaller changes to improve existing documentation and to add more examples.
Extensions These are mostly performance improvements or preparations for performance improvements.
This release contains one security fix:
encoding/protojson
: Unmarshal
could enter an infinite loop when unmarshaling certain forms of invalid JSON. This condition can occur when unmarshaling into a message which contains a google.protobuf.Any
value, or when the UnmarshalOptions.DiscardUnknown
option is set. Unmarshal
now correctly returns an error when handling these inputs. This is CVE-2024-24786.Full Changelog: https://github.com/protocolbuffers/protobuf-go/compare/v1.31.0...v1.32.0
This release contains commit https://github.com/protocolbuffers/protobuf-go/commit/bfcd6476a38e41247d6bb43dc8f00b23ec9fffc2, which fixes a denial of service vulnerability by preventing a stack overflow through a default maximum recursion limit. See https://github.com/golang/protobuf/issues/1583 and https://github.com/golang/protobuf/issues/1584 for details.
New Features
Minor performance improvements
Bug fixes
Announcement In the previous two releases, v1.29.0 and v1.29.1, we associated the tags with the wrong commits and thus the tags do not reference any commit in this repository. This tag, v1.30.0, refers to an existing commit again. Sorry for the inconvenience.
New Features
This version introduces a new package protodelim
to marshal and unmarshal size-delimited messages.
It also brings the implementation up to date with the latest protobuf features.
New Features
Alignment with protobuf
Documentation improvements:
Minor performance improvements
Breaking changes
The release provides a new unmarshal option for limiting the recursion depth when unmarshalling nested messages to prevent stack overflows. (UnmarshalOptions.RecursionLimit
).
New features:
Documentation improvements:
Updated supported versions:
The new UnmarshalOptions.RecursionLimit
limits the maximum recursion depth when unmarshalling messages. The limit is applied for nested messages. When messages are nested deeper than the specified limit the unmarshalling will fail. If unspecified, a default limit of 10,000 is applied.
In addition to the configurable limit for message nesting a non-configurable recursion limit for group nesting of 10,000 was introduced.
The default recursion limit of 10,000 introduced in the release is subject to change. We want to align this limit with implementations for other languages in the long term. C++ and Java use a limit of 100 which is also the target for the Go implementation.