Skip to content

Releases: protocolbuffers/protobuf-go

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

v1.30.0

16 Mar 08:59
Compare
Choose a tag to compare

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.

Notable changes

New Features

  • CL/449576: protoadapt: helper functions to convert v1 or v2 message to either v1 or v2 message.

v1.29.1

14 Mar 09:55
Compare
Choose a tag to compare

Notable changes

Bug fixes

  • CL/475995: internal/encoding/text: fix parsing of incomplete numbers

v1.29.0

08 Mar 16:04
Compare
Choose a tag to compare

Overview

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.

Notable changes

New Features

  • CL/419254: encoding: add protodelim package
  • CL/450775: reflect/protoreflect: add Value.Equal method
  • CL/462315: cmd/protoc-gen-go: make deprecated messages more descriptive
  • CL/473015: encoding/prototext: allow whitespace and comments between minus sign and number in negative numeric literal

Alignment with protobuf

  • CL/426054: types/descriptorpb: update *.pb.go to use latest protoc release, 21.5
  • CL/425554: encoding/protojson: fix parsing of google.protobuf.Timestamp
  • CL/461238: protobuf: remove the check for reserved field numbers
  • CL/469255: types/descriptorpb: regenerate using latest protobuf v22.0 release
  • CL/472696: cmd/protoc-gen-go: support protobuf retention feature

Documentation improvements:

  • CL/464275: proto: document Equal behavior of invalid messages
  • CL/466375: all: update links to Protocol Buffer documentation

Minor performance improvements

  • CL/460215: types/known/structpb: preallocate map in AsMap
  • CL/465115: internal/strs: avoid unnecessary allocations in Builder

Breaking changes

  • CL/461238: protobuf: remove the check for reserved field numbers
    • protowire.(Number).IsValid() no longer returns false for reserved fields because reserved fields are considered semantically valid by the protobuf spec.