|
|
|
@ -1,3 +1,131 @@ |
|
|
|
|
2017-08-01 version 3.4.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) |
|
|
|
|
Planned Future Changes |
|
|
|
|
* There are some changes that are not included in this release but are planned |
|
|
|
|
for the near future |
|
|
|
|
- Preserve unknown fields in proto3: We are going to bring unknown fields |
|
|
|
|
back into proto3. In this release, some languages start to support |
|
|
|
|
preserving unknown fields in proto3, controlled by flags/options. Some |
|
|
|
|
languages also introduce explict APIs to drop unknown fields for |
|
|
|
|
migration. Please read the change log sections by languages for details. |
|
|
|
|
For general timeline and plan: |
|
|
|
|
|
|
|
|
|
https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view |
|
|
|
|
|
|
|
|
|
For issues and discussions: |
|
|
|
|
|
|
|
|
|
https://github.com/google/protobuf/issues/272 |
|
|
|
|
|
|
|
|
|
- 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: |
|
|
|
|
|
|
|
|
|
https://github.com/google/protobuf/issues/2780 |
|
|
|
|
|
|
|
|
|
to provide your feedback. |
|
|
|
|
|
|
|
|
|
General |
|
|
|
|
* Extension ranges now accept options and are customizable. |
|
|
|
|
* "reserve" keyword now supports “max” in field number ranges, |
|
|
|
|
e.g. reserve 1000 to max; |
|
|
|
|
|
|
|
|
|
C++ |
|
|
|
|
* Proto3 messages are now able to preserve unknown fields. The default |
|
|
|
|
behavior is still to drop unknowns, which will be flipped in a future |
|
|
|
|
release. If you rely on unknowns fields being dropped. Please use |
|
|
|
|
Messgae::DiscardUnknownFields() explicitly. |
|
|
|
|
* Packable proto3 fields are now packed by default in serialization. |
|
|
|
|
* Following C++11 features are introduced when C++11 is available: |
|
|
|
|
- move-constructor and move-assignment are introduced to messages |
|
|
|
|
- Repeated fields constructor now takes std::initializer_list |
|
|
|
|
- rvalue setters are introduced for string fields |
|
|
|
|
* Experimental Table-Driven parsing and serialization available to test. To |
|
|
|
|
enable it, pass in table_driven_parsing table_driven_serialization protoc |
|
|
|
|
generator flags for C++ |
|
|
|
|
|
|
|
|
|
$ protoc --cpp_out=table_driven_parsing,table_driven_serialization:./ \ |
|
|
|
|
test.proto |
|
|
|
|
* lite generator parameter supported by the generator. Once set, all generated |
|
|
|
|
files, use lite runtime regardless of the optimizer_for setting in the |
|
|
|
|
.proto file. |
|
|
|
|
* Various optimizations to make C++ code more performant on PowerPC platform |
|
|
|
|
* Fixed maps data corruption when the maps are modified by both reflection API |
|
|
|
|
and generated API. |
|
|
|
|
* Deterministic serialization on maps reflection now uses stable sort. |
|
|
|
|
* file() accessors are introduced to various *Descriptor classes to make |
|
|
|
|
writing template function easier. |
|
|
|
|
* ByteSize() and SpaceUsed() are deprecated.Use ByteSizeLong() and |
|
|
|
|
SpaceUsedLong() instead |
|
|
|
|
* Consistent hash function is used for maps in DEBUG and NDEBUG build. |
|
|
|
|
* "using namespace std" is removed from stubs/common.h |
|
|
|
|
* Various performance optimizations and bug fixes |
|
|
|
|
|
|
|
|
|
Java |
|
|
|
|
* Introduced new parser API DiscardUnknownFieldsParser in preparation of |
|
|
|
|
proto3 unknown fields preservation change. Users who want to drop unknown |
|
|
|
|
fields should migrate to use this new parser API. For example: |
|
|
|
|
|
|
|
|
|
Parser<Foo> parser = DiscardUnknownFieldsParser.wrap(Foo.parser()); |
|
|
|
|
Foo foo = parser.parseFrom(input); |
|
|
|
|
|
|
|
|
|
* Introduced new TextFormat API printUnicodeFieldValue() that prints field |
|
|
|
|
value without escaping unicode characters. |
|
|
|
|
* Added Durations.compare(Duration, Duration) and |
|
|
|
|
Timestamps.compare(Timestamp, Timestamp). |
|
|
|
|
* JsonFormat now accepts base64url encoded bytes fields. |
|
|
|
|
* Optimized CodedInputStream to do less copies when parsing large bytes |
|
|
|
|
fields. |
|
|
|
|
* Optimized TextFormat to allocate less memory when printing. |
|
|
|
|
|
|
|
|
|
Python |
|
|
|
|
* SerializeToString API is changed to SerializeToString(self, **kwargs), |
|
|
|
|
deterministic parameter is accepted for deterministic serialization. |
|
|
|
|
* Added sort_keys parameter in json format to make the output deterministic. |
|
|
|
|
* Added indent parameter in json format. |
|
|
|
|
* Added extension support in json format. |
|
|
|
|
* Added __repr__ support for repeated field in cpp implementation. |
|
|
|
|
* Added file in FieldDescriptor. |
|
|
|
|
* Added pretty-print filter to text format. |
|
|
|
|
* Services and method descriptors are always printed even if generic_service |
|
|
|
|
option is turned off. |
|
|
|
|
|
|
|
|
|
PHP |
|
|
|
|
* Support PHP generic services. Specify file option php_generic_service=true |
|
|
|
|
to enable generating service interface. |
|
|
|
|
* Message, repeated and map fields setters take value instead of reference. |
|
|
|
|
* Added map iterator in c extension. |
|
|
|
|
* Support json encode/decode. |
|
|
|
|
* Added more type info in getter/setter phpdoc |
|
|
|
|
* Fixed the problem that c extension and php implementation cannot be used |
|
|
|
|
together. |
|
|
|
|
* Added file option php_namespace to use custom php namespace instead of |
|
|
|
|
package. |
|
|
|
|
* Added fluent setter. |
|
|
|
|
* Added descriptor API in runtime for custom encode/decode. |
|
|
|
|
* Various bug fixes. |
|
|
|
|
|
|
|
|
|
Objective-C |
|
|
|
|
* Fix for GPBExtensionRegistry copying and add tests. |
|
|
|
|
* Optimize GPBDictionary.m codegen to reduce size of overall library by 46K |
|
|
|
|
per architecture. |
|
|
|
|
* Fix some cases of reading of 64bit map values. |
|
|
|
|
* Properly error on a tag with field number zero. |
|
|
|
|
* Preserve unknown fields in proto3 syntax files. |
|
|
|
|
* Document the exceptions on some of the writing apis. |
|
|
|
|
|
|
|
|
|
C# |
|
|
|
|
* Implemented IReadOnlyDictionary<K,V> in MapField<K,V> |
|
|
|
|
* Added TryUnpack method for Any message in addition to Unpack. |
|
|
|
|
* Converted C# projects to MSBuild (csproj) format. |
|
|
|
|
|
|
|
|
|
Ruby |
|
|
|
|
* Several bug fixes. |
|
|
|
|
|
|
|
|
|
Javascript |
|
|
|
|
* Added support of field option js_type. Now one can specify the JS type of a |
|
|
|
|
64-bit integer field to be string in the generated code by adding option |
|
|
|
|
[jstype = JS_STRING] on the field. |
|
|
|
|
|
|
|
|
|
2017-04-05 version 3.3.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) |
|
|
|
|
Planned Future Changes |
|
|
|
|
* There are some changes that are not included in this release but are |
|
|
|
|