d4f0800c42
We occasionally need to work with immutable, empty lists, maps, and messages. Notably, Message.Get on an empty repeated field will return a "frozen" empty value. Move handling of these immutable, zero-length composites into Converter, to unify the behavior of regular and extension fields. Add a Zero method to Converter, MessageType, and ExtensionType, to provide a consistent way to get an empty, frozen value of a composite type. Adding this method to the public {Message,Extension}Type interfaces does increase our API surface, but lets us (for example) cleanly represent an empty map as a nil map rather than a non-nil one wrapped in a frozenMap type. Drop the frozen{List,Map,Message} types as no longer necessary. (These types did have support for creating a read-only view of a non-empty value, but we are not currently using that feature.) Change-Id: Ia76f149d591da07b40ce75b7404a7ab8a60cb9d8 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/189339 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com> |
||
---|---|---|
benchmarks | ||
cmd | ||
compiler/protogen | ||
encoding | ||
internal | ||
proto | ||
reflect | ||
runtime | ||
testing/prototest | ||
types | ||
.gitignore | ||
.travis.yml | ||
AUTHORS | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
go.mod | ||
go.sum | ||
integration_test.go | ||
LICENSE | ||
PATENTS | ||
README.md | ||
regenerate.bash | ||
test.bash |
Next Generation Go Protocol Buffers
WARNING: This repository is in active development. There are no guarantees about API stability. Breaking changes will occur until a stable release is made and announced.
This repository is for the development of the next major Go implementation of protocol buffers. This library makes breaking API changes relative to the existing Go protobuf library. Of particular note, this API aims to make protobuf reflection a first-class feature of the API and implements the protobuf ecosystem in terms of reflection.
Design Documents
List of relevant design documents:
Contributing
We appreciate community contributions. See CONTRIBUTING.md.
Reporting Issues
Issues regarding the new API can be filed at
github.com/golang/protobuf.
Please use a APIv2:
prefix in the title to make it clear that
the issue is regarding the new API work.