commit | 01c0e8d680bc8917fc8899c1ba7228de04b076fd | [log] [tgz] |
---|---|---|
author | Damien Neil <dneil@google.com> | Tue Nov 12 12:33:12 2019 -0800 |
committer | Damien Neil <dneil@google.com> | Tue Nov 12 20:59:03 2019 +0000 |
tree | a840c5e8d7ee9865eadbd5a97c8130678cbb55d2 | |
parent | 1605775be0bfd4084c40cac4262ada8900791de1 [diff] |
proto, internal/impl: make wire output more consistent with v1 The v1 wire marshaler sorts fields as follows: - All extensions, sorted by field number. - All non-oneof fields, sorted by field number. - All oneof fields, in indeterminate order. We already make some steps toward supporting this ordering: The fast path encoder places extensions in sorted order at the start of the message. This commit moves oneof fields to the end of the message, makes the reflection-based encoder use this ordering when deterministic marshaling is enabled, and adds a test to catch unintentional changes to the ordering. Users SHOULD NOT depend on stability of the marshal output. It is subject to change over time. Without deterministic marshaling enabled, it is subject to change over calls to Marshal. Change-Id: I6cfd89090d790a3bb50785f32b94d2781d7d08db Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/206800 Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
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.
List of relevant design documents:
We appreciate community contributions. See CONTRIBUTING.md.
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.