internal/legacy: drop dependency on protoV1 via vendoring

In order to transition more of v1 proto package to use the v2 API,
we need the v2 API to stop depending on v1 proto. The legacy package currently
depends on v1 proto because it needs to unmarshal the descriptor protos.

Ideally, we would switch this to use the v2 implementation of wire unmarshaling.
However, that is not available yet. So, instead, we vendor a minified version
of the v1 proto package that only supports unmarshaling.

The only changes to the vendored v1 code are:
* Delete code not needed to implement proto.Unmarshal
* Drop support for message sets
* Drop support for reporting the full field name for required not set errors

The unused tool was used to delete unrelated code:

To verify that the dependency was dropped:
$ cd internal/legacy
$ go list -f "{{join .Deps \"\n\"}}" | sort | uniq | grep protobuf

Change-Id: I470865f1a987203574339fefc7d83843a12af966
Reviewed-by: Damien Neil <>
7 files changed
tree: 02ba1e26b15cb1cd508c86940282f410531023fa
  1. .gitignore
  2. .travis.yml
  9. cmd/
  10. encoding/
  11. go.mod
  12. go.sum
  13. internal/
  14. proto/
  15. protogen/
  16. reflect/
  17. regenerate.bash
  18. runtime/
  19. test.bash
  20. types/

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:


We appreciate community contributions. See

Reporting Issues

Issues regarding the new API can be filed at Please use a APIv2: prefix in the title to make it clear that the issue is regarding the new API work.