Go support for Google's protocol buffers
Go to file
Damien Neil d4f0800c42 all: make handling of zero-value composites more consistent
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>
2019-08-08 18:20:25 +00:00
benchmarks benchmarks: move download_benchdata.bash into benchmarks/ dir 2019-07-09 22:36:27 +00:00
cmd runtime/protoimpl, cmd/protoc-gen-go: support release versioning 2019-08-07 22:59:30 +00:00
compiler/protogen compiler/protogen, cmd/protoc-gen-go: use alternative comments API 2019-08-07 06:00:36 +00:00
encoding runtime/protoimpl, cmd/protoc-gen-go: support release versioning 2019-08-07 22:59:30 +00:00
internal all: make handling of zero-value composites more consistent 2019-08-08 18:20:25 +00:00
proto all: remove dead code 2019-08-06 21:16:48 +00:00
reflect all: make handling of zero-value composites more consistent 2019-08-08 18:20:25 +00:00
runtime runtime/protoimpl, cmd/protoc-gen-go: support release versioning 2019-08-07 22:59:30 +00:00
testing/prototest all: add NewField, NewElement, NewValue 2019-08-06 21:54:30 +00:00
types runtime/protoimpl, cmd/protoc-gen-go: support release versioning 2019-08-07 22:59:30 +00:00
.gitignore .gitignore: add policy for new entries 2019-08-06 21:42:16 +00:00
.travis.yml .travis.yml: configure for OSX 2019-03-13 18:04:08 +00:00
AUTHORS AUTHORS, CONTRIBUTORS, LICENSE, PATENTS: initial commit 2018-08-07 22:39:48 +00:00
CONTRIBUTING.md CONTRIBUTING.md: add pre-push hook instructions 2018-08-07 23:58:41 +00:00
CONTRIBUTORS AUTHORS, CONTRIBUTORS, LICENSE, PATENTS: initial commit 2018-08-07 22:39:48 +00:00
go.mod all: update to github.com/golang/protobuf@b9f5089f 2019-07-18 00:01:40 +00:00
go.sum all: update to github.com/golang/protobuf@b9f5089f 2019-07-18 00:01:40 +00:00
integration_test.go all: implement proto1 weak fields 2019-07-15 18:44:12 +00:00
LICENSE AUTHORS, CONTRIBUTORS, LICENSE, PATENTS: initial commit 2018-08-07 22:39:48 +00:00
PATENTS AUTHORS, CONTRIBUTORS, LICENSE, PATENTS: initial commit 2018-08-07 22:39:48 +00:00
README.md CONTRIBUTING.md: initial commit 2018-08-01 20:39:06 +00:00
regenerate.bash internal/cmd/generate-protos: generate test for testdata 2019-03-11 19:40:53 +00:00
test.bash test.bash: add -failfast flag 2019-08-05 21:48:09 +00:00

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.