Notable changes:
- add DiscardUnknown function
- The serialization logic (for both Marshal and Unmarshal) has been
optimized. Testing inside Google demonstrate that the new
implementation is about 1.3x to 2.1x faster.
- Unknown fields in proto3 are now preserved.
- JSON marshal and unmarshal now check for proto2 required field.
- GetExtension returns the raw bytes if the ExtensionDesc does not
have type information.
- Invalid UTF-8 in string types are rejected during marshal and
unmarshal.
- Fields of bad wire types are treated as unknown fields instead of an
error.
- The protoc-gen-go generator supports the paths=source_relative
option.
- Unknown fields in map entries are now ignored instead of causing an
unmarshal error.
- The "import public" feature is now implemented using Go type
aliases.
- jsonpb.Unmarshal correctly handles escaped strings for some of the
well-known types
- jsonpb.Unmarshal correctly returns an error when trying to marshal a
scalar enum into repeated enums.
- jsonpb.Unmarshal correctly handles string versions of numeric
primitives
- jsonpb.Unmarshal correctly handles enum values in maps
- fixes a performance regression where nested maps led to quadratic
behavior
- reverts strict UTF-8 validation for proto2 string fields
- makes UTF-8 validation errors for proto3 string fields non-fatal
The actual fix as been done by "pkglint -F */*/buildlink3.mk", and was
reviewed manually.
There are some .include lines that still are indented with zero spaces
although the surrounding .if is indented. This is existing practice.
Protocol Buffers are Google's data interchange format.
This software implements Go bindings for protocol buffers. For information
about protocol buffers themselves, see
https://developers.google.com/protocol-buffers/