Releases: protocolbuffers/protobuf-go
v1.36.1
v1.36.0
Full Changelog: v1.35.2...v1.36.0
User-visible changes:
CL/635139: src/google/protobuf: document UnmarshalJSON / API level behavior
CL/635138: reflect/protoreflect: use [] syntax to reference method
CL/635137: proto: add reference to size semantics with lazy decoding to comment
CL/634818: compiler/protogen: allow overriding API level from --go_opt
CL/634817: cmd/protoc-gen-go: generate _protoopaque variant for hybrid
CL/634816: all: regenerate.bash for Opaque API
CL/634815: all: Release the Opaque API
CL/634015: types/descriptorpb: regenerate using latest protobuf v29.1 release
CL/632735: internal/impl: skip synthetic oneofs in messageInfo
CL/627876: all: start v1.35.2-devel
v1.35.2
Full Changelog: v1.35.1...v1.35.2
Maintenance:
CL/623115: proto: refactor equal_test from explicit table to use makeMessages()
CL/623116: encoding/prototext: use testmessages_test.go approach, too
CL/623117: internal/testprotos/test: add nested message field with [lazy=true]
CL/624415: proto: switch messageset_test to use makeMessages() injection point
CL/624416: internal/impl: fix TestMarshalMessageSetLazyRace (was a no-op!)
User-visible changes:
CL/618395: encoding/protojson: allow missing value for Any of type Empty
CL/618979: all: implement strip_enum_prefix editions feature
CL/622575: testing/protocmp: document behavior when combining Ignore and Sort
v1.35.1
Full Changelog: v1.34.2...v1.35.1
Maintenance:
User-visible changes:
- CL/587536: protojson: include field name in error messages
- CL/597055: compiler/protogen: always report editions support level of the plugin
- CL/596539: all: plumb the lazy option into filedesc.Field and .Extension
- CL/601775: types/known/structpb: add support for more types and json.Number
- CL/607995: proto: extend documentation of GetExtension, SetExtension
- CL/609035: proto: implement proto.Equal fast-path
Bug fixes:
all: release v1.34.2
Minor feature:
- CL/589336: gofeatures: allow setting legacy_unmarshal_json_enum feature at file level
Minor bug fixes:
- CL/588875: types/descriptorpb: regenerate using latest protobuf v27.0 release
- CL/586396: internal/impl: fix size cache semantics with lazy decoding
- CL/585736: reflect/protodesc: remove obsolete JSON name check from desc validator
- CL/588976: reflect/protoreflect: FieldDescriptor.Kind should never be GroupKind for maps or fields of map entry
all: release v1.34.1
all: release v1.34.0
Notable changes
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.
- CL/574455: proto: extend Marshal documentation, include an example
- CL/574635: proto: extend Unmarshal documentation, include an example
- CL/574836: protogen: update Options documentation.
- CL/573361: proto: add examples for Size, MarshalAppend (regarding allocations)
- CL/579895: encoding/{protojson,prototext}: strengthen wording on stability
Extensions
These are mostly performance improvements or preparations for performance improvements.
- CL/575035: internal/impl: ensure proto.HasExtension does not allocate
- CL/576315: [encoding/{protojson,prototext}: strengthen wording on stability](proto: CSE ProtoReflect() and TypeDescriptor() in proto.HasExtension
- CL/576316: internal/impl: pass ExtensionTypeDescriptor to extensionMap
- CL/579275: [proto] use the correct parent when resolving features for extensions
- CL/579595: proto: return an error instead of producing invalid wire format
v1.33.0
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 agoogle.protobuf.Any
value, or when theUnmarshalOptions.DiscardUnknown
option is set.Unmarshal
now correctly returns an error when handling these inputs. This is CVE-2024-24786.
v1.32.0
Full Changelog: v1.31.0...v1.32.0
This release contains commit bfcd647, which fixes a denial of service vulnerability by preventing a stack overflow through a default maximum recursion limit. See golang/protobuf#1583 and golang/protobuf#1584 for details.
v1.31.0
Notable changes
New Features
- CL/489316: types/dynamicpb: add NewTypes
- Add a function to construct a dynamic type registry from a protoregistry.Files
- CL/489615: encoding: add MarshalAppend to protojson and prototext
Minor performance improvements
- CL/491596: encoding/protodelim: If UnmarshalFrom gets a bufio.Reader, try to reuse its buffer instead of creating a new one
- CL/500695: proto: store the size of tag to avoid multiple calculations
Bug fixes