Awesome! Looking forward to try it out. El lunes, 29 de enero de 2018, 19:47:40 (UTC-3), Joe Tsai escribió: > > (If you don't use Go protocol buffers, you can stop reading) > > Hello gophers, > > This is an announcement that we will be merging the dev branch of > github.com/golang/protobuf <https://github.com/golang/protobuf/tree/dev> into > master on April 30th (approximately 3 months from now). > > This merge will introduce several significant changes: > > - A new table-driven implementation that is shown to be about 1.3x to > 2.1x faster when tested inside Google. > - The preservation of unknown fields in proto3 messages > <https://github.com/google/protobuf/issues/272>. > - Validation that strings are valid UTF-8 as specified in the language > guides > <https://developers.google.com/protocol-buffers/docs/proto3#scalar>. > > When tested inside Google, we discovered that these changes were more > disruptive than expected. The cause of the issues are mostly due to > additional fields added to generated messages by protoc-gen-go: > > - An XXX_NoUnkeyedLiteral field that the generator now creates to > force users to use keyed literals (e.g., foopb.Message{Name: "Golang", > Age: > 8} as opposed to foopb.Message{"Golang", 8}) to ensure forward compatible > usage of messages. > - An XXX_unrecognized field that is necessary for proto3 to always > preserve unknown fields. This breaks users that assume comparability of > proto3 messages. Since XXX_unrecognized is of type []byte, this means that > proto3 messages cannot be used as map keys nor directly compared using the > == operator. > - An XXX_sizecache field that is part of the internal implementation > of the table-driven serializer. The presence of this field can break tests > that use reflect.DeepEqual to compare some received messages with some > golden message. It is recommended that proto.Equal be used instead for > this > situation. > > The semantic changes may also cause issues: > > - Strict validation of string fields as valid UTF-8. It is regrettable > that the Go implementation has not enforced the encoding thus far, and > that > was an oversight on our part. However, in order for protobuf messages to > be > properly parsed by implementations in other languages, it is important to > produce an error on the Go side to protect users from generating invalid > messages. If your strings do not use UTF-8, then consider using the bytes > type. > - Preservation of unknown fields in proto3. In nearly all use-cases, > this change should not cause an issue. However, the preservation of > unknown > fields can cause issues if you relied upon proto3 to drop unknown fields > (e.g., for security reasons to avoid leaking sensitive information). Note > that the proto3 specification has previously said such behavior is > unspecified. To explicitly drop unknown fields, users should use > proto.DiscardUnknown > <https://godoc.org/github.com/golang/protobuf/proto#DiscardUnknown> as > appropriate. > > Note that the Go Protocol Buffer compatibility agreement > <https://github.com/golang/protobuf#compatibility> reserves the right to > make changes to internal XXX fields or due to specification errors without > violating backwards compatibility. We are still making an announcement in > advanced so that appropriate user-side changes can be made beforehand so > that the eventual merge causes as little disruption as possible. > > We recommend that you try vendoring the the dev branch to check whether > your code works properly with the upcoming Go protobuf changes. If you > experience failures, we recommend that you perform the appropriate fix as > mentioned in the points above. If you discover any issues with the dev > branch, feel free to file an issue on the golang/protobuf tracker > <https://github.com/golang/protobuf/issues>. > > Thanks, > > JT (on behalf of the Go library team) > > > P.S. Note that this only affects golang/protobuf > <https://github.com/golang/protobuf> and not gogo/protobuf > <https://github.com/gogo/protobuf>, which is a fork of the former. >
-- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.