Planned Future Changes
- Make C++ implementation C++11 only: we plan to require C++11 to build protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields semantic changes are finished. Please join this github issue to provide your feedback.
General
- Unknown fields are now preserved in proto3 for most of the language implementations for proto3 by default. See the per-language section for details.
- reserve keyword are now supported in enums
C++
- Proto3 messages are now preserving unknown fields by default. If you rely on unknowns fields being dropped. Please use DiscardUnknownFields() explicitly.
- Deprecated the
unsafe_arena_release_*
and unsafe_arena_add_allocated_*
methods for string fields.
- Added move constructor and move assignment to RepeatedField, RepeatedPtrField and google::protobuf::Any.
- Added perfect forwarding in Arena::CreateMessage
- In-progress experimental support for implicit weak fields with lite protos. This feature allows the linker to strip out more unused messages and reduce binary size.
- Various performance optimizations.
Java
- Proto3 messages are now preserving unknown fields by default. If you’d like to drop unknown fields, please use the DiscardUnknownFieldsParser API. For example:
Parser<Foo> parser = DiscardUnknownFieldsParser.wrap(Foo.parser());
Foo foo = parser.parseFrom(input);
- Added a new
CodedInputStream
decoder for Iterable<ByteBuffer>
with direct ByteBuffers.
TextFormat
now prints unknown length-delimited fields as messages if possible.
FieldMaskUtil.merge()
no longer creates unnecessary empty messages when a message field is unset in both source message and destination message.
- Various performance optimizations.
Python
- Proto3 messages are now preserving unknown fields by default. Use
message.DiscardUnknownFields()
to drop unknown fields.
- Add FieldDescriptor.file in generated code.
- Add descriptor pool
FindOneofByName
in pure python.
- Change unknown enum values into unknown field set .
- Add more Python dict/list compatibility for
Struct
/ListValue
.
- Add utf-8 support for
text_format.Merge()/Parse()
.
- Support numeric unknown enum values for proto3 JSON format.
- Add warning for Unexpected end-group tag in cpp extension.
PHP
- Proto3 messages are now preserving unknown fields.
- Provide well known type messages in runtime.
- Add prefix ‘PB’ to generated class of reserved names.
- Fixed all conformance tests for encode/decode json in php runtime. C extension needs more work.
Objective-C
- Fixed some issues around copying of messages with unknown fields and then mutating the unknown fields in the copy.
C#
- Added unknown field support in JsonParser.
- Fixed oneof message field merge.
- Simplify parsing messages from array slices.
Ruby
- Unknown fields are now preserved by default.
- Fixed several bugs for segment fault.
Javascript
- Decoder can handle both paced and unpacked data no matter how the proto is defined.
- Decoder now accept long varint for 32 bit integers.