| 
					
				 | 
			
			
				@@ -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 
			 |