|  | @@ -1,3 +1,111 @@
 | 
	
		
			
				|  |  | +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
 | 
	
		
			
				|  |  | +    planned for the near future:
 | 
	
		
			
				|  |  | +      - Preserve unknown fields in proto3: please read this doc:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for the timeline and follow up this github issue:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          https://github.com/google/protobuf/issues/272
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        for discussion.
 | 
	
		
			
				|  |  | +      - Make C++ implementation C++11 only: we plan to require C++11 to build
 | 
	
		
			
				|  |  | +        protobuf code starting from 3.4.0 or 3.5.0 release. Please join this
 | 
	
		
			
				|  |  | +        github issue:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +          https://github.com/google/protobuf/issues/2780
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        to provide your feedback.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  C++
 | 
	
		
			
				|  |  | +  * Fixed map fields serialization of DynamicMessage to correctly serialize
 | 
	
		
			
				|  |  | +    both key and value regardless of their presence.
 | 
	
		
			
				|  |  | +  * Parser now rejects field number 0 correctly.
 | 
	
		
			
				|  |  | +  * New API Message::SpaceUsedLong() that’s equivalent to
 | 
	
		
			
				|  |  | +    Message::SpaceUsed() but returns the value in size_t.
 | 
	
		
			
				|  |  | +  * JSON support
 | 
	
		
			
				|  |  | +    - New flag always_print_enums_as_ints in JsonPrintOptions.
 | 
	
		
			
				|  |  | +    - New flag preserve_proto_field_names in JsonPrintOptions. It will instruct
 | 
	
		
			
				|  |  | +      the JSON printer to use the original field name declared in the .proto
 | 
	
		
			
				|  |  | +      file instead of converting them to lowerCamelCase when printing JSON.
 | 
	
		
			
				|  |  | +    - JsonPrintOptions.always_print_primtive_fields now works for oneof message
 | 
	
		
			
				|  |  | +      fields.
 | 
	
		
			
				|  |  | +    - Fixed a bug that doesn’t allow different fields to set the same json_name
 | 
	
		
			
				|  |  | +      value.
 | 
	
		
			
				|  |  | +    - Fixed a performance bug that causes excessive memory copy when printing
 | 
	
		
			
				|  |  | +      large messages.
 | 
	
		
			
				|  |  | +  * Various performance optimizations.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Java
 | 
	
		
			
				|  |  | +  * Map field setters eagerly validate inputs and throw NullPointerExceptions
 | 
	
		
			
				|  |  | +    as appropriate.
 | 
	
		
			
				|  |  | +  * Added ByteBuffer overloads to the generated parsing methods and the Parser
 | 
	
		
			
				|  |  | +    interface.
 | 
	
		
			
				|  |  | +  * proto3 enum's getNumber() method now throws on UNRECOGNIZED values.
 | 
	
		
			
				|  |  | +  * Output of JsonFormat is now locale independent.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Python
 | 
	
		
			
				|  |  | +  * Added FindServiceByName() in the pure-Python DescriptorPool. This works only
 | 
	
		
			
				|  |  | +    for descriptors added with DescriptorPool.Add(). Generated descriptor_pool
 | 
	
		
			
				|  |  | +    does not support this yet.
 | 
	
		
			
				|  |  | +  * Added a descriptor_pool parameter for parsing Any in text_format.Parse().
 | 
	
		
			
				|  |  | +  * descriptor_pool.FindFileContainingSymbol() now is able to find nested
 | 
	
		
			
				|  |  | +    extensions.
 | 
	
		
			
				|  |  | +  * Extending empty [] to repeated field now sets parent message presence.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  PHP
 | 
	
		
			
				|  |  | +  * Added file option php_class_prefix. The prefix will be prepended to all
 | 
	
		
			
				|  |  | +    generated classes defined in the file.
 | 
	
		
			
				|  |  | +  * When encoding, negative int32 values are sign-extended to int64.
 | 
	
		
			
				|  |  | +  * Repeated/Map field setter accepts a regular PHP array. Type checking is
 | 
	
		
			
				|  |  | +    done on the array elements.
 | 
	
		
			
				|  |  | +  * encode/decode are renamed to serializeToString/mergeFromString.
 | 
	
		
			
				|  |  | +  * Added mergeFrom, clear method on Message.
 | 
	
		
			
				|  |  | +  * Fixed a bug that oneof accessor didn’t return the field name that is
 | 
	
		
			
				|  |  | +    actually set.
 | 
	
		
			
				|  |  | +  * C extension now works with php7.
 | 
	
		
			
				|  |  | +  * This is the first GA release of PHP. We guarantee that old generated code
 | 
	
		
			
				|  |  | +    can always work with new runtime and new generated code.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Objective-C
 | 
	
		
			
				|  |  | +  * Fixed help for GPBTimestamp for dates before the epoch that contain
 | 
	
		
			
				|  |  | +    fractional seconds.
 | 
	
		
			
				|  |  | +  * Added GPBMessageDropUnknownFieldsRecursively() to remove unknowns from a
 | 
	
		
			
				|  |  | +    message and any sub messages.
 | 
	
		
			
				|  |  | +  * Addressed a threading race in extension registration/lookup.
 | 
	
		
			
				|  |  | +  * Increased the max message parsing depth to 100 to match the other languages.
 | 
	
		
			
				|  |  | +  * Removed some use of dispatch_once in favor of atomic compare/set since it
 | 
	
		
			
				|  |  | +    needs to be heap based.
 | 
	
		
			
				|  |  | +  * Fixes for new Xcode 8.3 warnings.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  C#
 | 
	
		
			
				|  |  | +  * Fixed MapField.Values.CopyTo, which would throw an exception unnecessarily
 | 
	
		
			
				|  |  | +    if provided exactly the right size of array to copy to.
 | 
	
		
			
				|  |  | +  * Fixed enum JSON formatting when multiple names mapped to the same numeric
 | 
	
		
			
				|  |  | +    value.
 | 
	
		
			
				|  |  | +  * Added JSON formatting option to format enums as integers.
 | 
	
		
			
				|  |  | +  * Modified RepeatedField<T> to implement IReadOnlyList<T>.
 | 
	
		
			
				|  |  | +  * Introduced the start of custom option handling; it's not as pleasant as it
 | 
	
		
			
				|  |  | +    might be, but the information is at least present. We expect to extend code
 | 
	
		
			
				|  |  | +    generation to improve this in the future.
 | 
	
		
			
				|  |  | +  * Introduced ByteString.FromStream and ByteString.FromStreamAsync to
 | 
	
		
			
				|  |  | +    efficiently create a ByteString from a stream.
 | 
	
		
			
				|  |  | +  * Added whole-message deprecation, which decorates the class with [Obsolete].
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Ruby
 | 
	
		
			
				|  |  | +  * Fixed Message#to_h for messages with map fields.
 | 
	
		
			
				|  |  | +  * Fixed memcpy() in binary gems to work for old glibc, without breaking the
 | 
	
		
			
				|  |  | +    build for non-glibc libc’s like musl.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  Javascript
 | 
	
		
			
				|  |  | +  * Added compatibility tests for version 3.0.0.
 | 
	
		
			
				|  |  | +  * Added conformance tests.
 | 
	
		
			
				|  |  | +  * Fixed serialization of extensions: we need to emit a value even if it is
 | 
	
		
			
				|  |  | +    falsy (like the number 0).
 | 
	
		
			
				|  |  | +  * Use closurebuilder.py in favor of calcdeps.py for compiling JavaScript.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  2017-01-23 version 3.2.0 (C++/Java/Python/PHP/Ruby/Objective-C/C#/JavaScript/Lite)
 | 
	
		
			
				|  |  |    General
 | 
	
		
			
				|  |  |    * Added protoc version number to protoc plugin protocol. It can be used by
 |