Skip to content

Releases: protocolbuffers/protobuf-go

v1.36.1

23 Dec 12:50
Compare
Choose a tag to compare

Full Changelog: v1.36.0...v1.36.1

Bug fixes:
CL/638495: internal/impl: revert IsSynthetic() check to fix panic

Maintenance:
CL/637475: internal/errors: delete compatibility code for Go before 1.13

v1.36.0

16 Dec 16:51
Compare
Choose a tag to compare

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

14 Nov 09:46
Compare
Choose a tag to compare

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

07 Oct 13:30
Compare
Choose a tag to compare

Full Changelog: v1.34.2...v1.35.1

Maintenance:

  • CL/606755: all: remove unused purego support
  • CL/608316: all: set Go language version to Go 1.21

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:

  • CL/595337: reflect/protodesc: fix handling of delimited extensions in editions
  • CL/602055: internal/cmd/generate-protos: fix pkg check for editions features
  • CL/603015: internal: generate extension numbers, fix editions parsing

all: release v1.34.2

11 Jun 08:36
Compare
Choose a tag to compare

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

06 May 14:20
Compare
Choose a tag to compare

Minor fixes for editions compliance:

  • CL/582635: all: update to protobuf 27.0-rc1 and regenerate protos
  • CL/582755: encoding/proto[json|text]: accept lower case names for group-like fields

all: release v1.34.0

30 Apr 08:15
Compare
Choose a tag to compare

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

06 Mar 00:48
Compare
Choose a tag to compare

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.

v1.32.0

22 Dec 09:41
Compare
Choose a tag to compare

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

26 Jun 11:48
Compare
Choose a tag to compare

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

  • CL/497935: internal/order: fix sorting of synthetic oneofs to be deterministic
  • CL/505555: encoding/protodelim: fix handling of io.EOF