aboutsummaryrefslogtreecommitdiff
path: root/CHANGES.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGES.txt')
-rw-r--r--CHANGES.txt501
1 files changed, 500 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index d3b78f74..c7c42916 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,502 @@
+2017-12-20 version 3.5.1 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript)
+ Planned Future Changes
+ * Make C++ implementation C++11 only: we plan to require C++11 to build
+ protobuf code starting from 3.6.0 release. Please join this github issue:
+ https://github.com/google/protobuf/issues/2780 to provide your feedback.
+
+ protoc
+ * Fixed a bug introduced in 3.5.0 and protoc in Windows now accepts non-ascii
+ characters in paths again.
+
+ C++
+ * Removed several usages of C++11 features in the code base.
+ * Fixed some compiler warnings.
+
+ PHP
+ * Fixed memory leak in C-extension implementation.
+ * Added discardUnknokwnFields API.
+ * Removed duplicatd typedef in C-extension headers.
+ * Avoided calling private php methods (timelib_update_ts).
+ * Fixed Any.php to use fully-qualified name for DescriptorPool.
+
+ Ruby
+ * Added Google_Protobuf_discard_unknown for discarding unknown fields in
+ messages.
+
+ C#
+ * Unknown fields are now preserved by default.
+ * Floating point values are now bitwise compared, affecting message equality
+ check and Contains() API in map and repeated fields.
+
+
+2017-11-13 version 3.5.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript)
+ Planned Future Changes
+ * Make C++ implementation C++11 only: we plan to require C++11 to build
+ protobuf code starting from 3.6.0 release. Please join this github issue:
+ https://github.com/google/protobuf/issues/2780 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.
+
+
+2017-08-14 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 explicit 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
+ Message::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.
+ * Note: AppEngine 2.5 is deprecated on June 2017 that AppEngine 2.5 will
+ never update protobuf runtime. Users who depend on AppEngine 2.5 should use
+ old protoc.
+
+ 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
+ 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
+ protoc plugin to detect which version of protoc is used with the plugin and
+ mitigate known problems in certain version of protoc.
+
+ C++
+ * The default parsing byte size limit has been raised from 64MB to 2GB.
+ * Added rvalue setters for non-arena string fields.
+ * Enabled debug logging for Android.
+ * Fixed a double-free problem when using Reflection::SetAllocatedMessage()
+ with extension fields.
+ * Fixed several deterministic serialization bugs:
+ * MessageLite::SerializeAsString() now respects the global deterministic
+ serialization flag.
+ * Extension fields are serialized deterministically as well. Fixed protocol
+ compiler to correctly report importing-self as an error.
+ * Fixed FileDescriptor::DebugString() to print custom options correctly.
+ * Various performance/codesize optimizations and cleanups.
+
+ Java
+ * The default parsing byte size limit has been raised from 64MB to 2GB.
+ * Added recursion limit when parsing JSON.
+ * Fixed a bug that enumType.getDescriptor().getOptions() doesn't have custom
+ options.
+ * Fixed generated code to support field numbers up to 2^29-1.
+
+ Python
+ * You can now assign NumPy scalars/arrays (np.int32, np.int64) to protobuf
+ fields, and assigning other numeric types has been optimized for
+ performance.
+ * Pure-Python: message types are now garbage-collectable.
+ * Python/C++: a lot of internal cleanup/refactoring.
+
+ PHP (Alpha)
+ * For 64-bit integers type (int64/uint64/sfixed64/fixed64/sint64), use PHP
+ integer on 64-bit environment and PHP string on 32-bit environment.
+ * PHP generated code also conforms to PSR-4 now.
+ * Fixed ZTS build for c extension.
+ * Fixed c extension build on Mac.
+ * Fixed c extension build on 32-bit linux.
+ * Fixed the bug that message without namespace is not found in the descriptor
+ pool. (#2240)
+ * Fixed the bug that repeated field is not iterable in c extension.
+ * Message names Empty will be converted to GPBEmpty in generated code.
+ * Added phpdoc in generated files.
+ * The released API is almost stable. Unless there is large problem, we won't
+ change it. See
+ https://developers.google.com/protocol-buffers/docs/reference/php-generated
+ for more details.
+
+ Objective-C
+ * Added support for push/pop of the stream limit on CodedInputStream for
+ anyone doing manual parsing.
+
+ C#
+ * No changes.
+
+ Ruby
+ * Message objects now support #respond_to? for field getters/setters.
+ * You can now compare “message == non_message_object” and it will return false
+ instead of throwing an exception.
+ * JRuby: fixed #hashCode to properly reflect the values in the message.
+
+ Javascript
+ * Deserialization of repeated fields no longer has quadratic performance
+ behavior.
+ * UTF-8 encoding/decoding now properly supports high codepoints.
+ * Added convenience methods for some well-known types: Any, Struct, and
+ Timestamp. These make it easier to convert data between native JavaScript
+ types and the well-known protobuf types.
+
+2016-09-23 version 3.1.0 (C++/Java/Python/PHP/Ruby/Objective-C/C#/JavaScript/Lite)
+ General
+ * Proto3 support in PHP (alpha).
+ * Various bug fixes.
+
+ C++
+ * Added MessageLite::ByteSizeLong() that’s equivalent to
+ MessageLite::ByteSize() but returns the value in size_t. Useful to check
+ whether a message is over the 2G size limit that protobuf can support.
+ * Moved default_instances to global variables. This allows default_instance
+ addresses to be known at compile time.
+ * Adding missing generic gcc 64-bit atomicops.
+ * Restore New*Callback into google::protobuf namespace since these are used
+ by the service stubs code
+ * JSON support.
+ * Fixed some conformance issues.
+ * Fixed a JSON serialization bug for bytes fields.
+
+ Java
+ * Fixed a bug in TextFormat that doesn’t accept empty repeated fields (i.e.,
+ “field: [ ]”).
+ * JSON support
+ * Fixed JsonFormat to do correct snake_case-to-camelCase conversion for
+ non-style-conforming field names.
+ * Fixed JsonFormat to parse empty Any message correctly.
+ * Added an option to JsonFormat.Parser to ignore unknown fields.
+ * Experimental API
+ * Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into
+ ByteString without copy.
+
+ Python
+ * JSON support
+ * Fixed some conformance issues.
+
+ PHP (Alpha)
+ * We have added the proto3 support for PHP via both a pure PHP package and a
+ native c extension. The pure PHP package is intended to provide usability
+ to wider range of PHP platforms, while the c extension is intended to
+ provide higher performance. Both implementations provide the same runtime
+ APIs and share the same generated code. Users don’t need to re-generate
+ code for the same proto definition when they want to switch the
+ implementation later. The pure PHP package is included in the php/src
+ directory, and the c extension is included in the php/ext directory.
+
+ Both implementations provide idiomatic PHP APIs:
+ * All messages and enums are defined as PHP classes.
+ * All message fields can only be accessed via getter/setter.
+ * Both repeated field elements and map elements are stored in containers
+ that act like a normal PHP array.
+
+ Unlike several existing third-party PHP implementations for protobuf, our
+ implementations are built on a "strongly-typed" philosophy: message fields
+ and array/map containers will throw exceptions eagerly when values of the
+ incorrect type (not including those that can be type converted, e.g.,
+ double <-> integer <-> numeric string) are inserted.
+
+ Currently, pure PHP runtime supports php5.5, 5.6 and 7 on linux. C
+ extension runtime supports php5.5 and 5.6 on linux.
+
+ See php/README.md for more details about installment. See
+ https://developers.google.com/protocol-buffers/docs/phptutorial for more
+ details about APIs.
+
+ Objective-C
+ * Helpers are now provided for working the the Any well known type (see
+ GPBWellKnownTypes.h for the api additions).
+ * Some improvements in startup code (especially when extensions aren’t used).
+
+ Javascript
+ * Fixed missing import of jspb.Map
+ * Fixed valueWriterFn variable name
+
+ Ruby
+ * Fixed hash computation for JRuby's RubyMessage
+ * Make sure map parsing frames are GC-rooted.
+ * Added API support for well-known types.
+
+ C#
+ * Removed check on dependency in the C# reflection API.
+
2016-09-06 version 3.0.2 (C++/Java/Python/Ruby/Objective-C/C#/JavaScript/Lite)
General
* Various bug fixes.
@@ -1229,7 +1728,7 @@
2008-09-29 version 2.0.2:
General
- * License changed from Apache 2.0 to New BSD.
+ * License changed from Apache 2.0 to 3-Clause BSD.
* It is now possible to define custom "options", which are basically
annotations which may be placed on definitions in a .proto file.
For example, you might define a field option called "foo" like so: