|
@@ -1,3 +1,135 @@
|
|
|
+2016-05-16 version 3.0.0-beta-3 (C++/Java/Python/Ruby/Nano/Objective-C/C#/JavaScript)
|
|
|
+ General
|
|
|
+ * Supported Proto3 lite-runtime in C++/Java for mobile platforms.
|
|
|
+ * Any type now supports APIs to specify prefixes other than
|
|
|
+ type.googleapis.com
|
|
|
+ * Removed javanano_use_deprecated_package option; Nano will always has its own
|
|
|
+ ".nano" package.
|
|
|
+
|
|
|
+ C++ (Beta)
|
|
|
+ * Improved hash maps.
|
|
|
+ - Improved hash maps comments. In particular, please note that equal hash
|
|
|
+ maps will not necessarily have the same iteration order and
|
|
|
+ serialization.
|
|
|
+ - Added a new hash maps implementation that will become the default in a
|
|
|
+ later release.
|
|
|
+ * Arenas
|
|
|
+ - Several inlined methods in Arena were moved to out-of-line to improve
|
|
|
+ build performance and code size.
|
|
|
+ - Added SpaceAllocatedAndUsed() to report both space used and allocated
|
|
|
+ - Added convenient class UnsafeArenaAllocatedRepeatedPtrFieldBackInserter
|
|
|
+ * Any
|
|
|
+ - Allow custom type URL prefixes in Any packing.
|
|
|
+ - TextFormat now expand the Any type rather than printing bytes.
|
|
|
+ * Performance optimizations and various bug fixes.
|
|
|
+
|
|
|
+ Java (Beta)
|
|
|
+ * Introduced an ExperimentalApi annotation. Annotated APIs are experimental
|
|
|
+ and are subject to change in a backward incompatible way in future releases.
|
|
|
+ * Introduced zero-copy serialization as an ExperimentalApi
|
|
|
+ - Introduction of the `ByteOutput` interface. This is similar to
|
|
|
+ `OutputStream` but provides semantics for lazy writing (i.e. no
|
|
|
+ immediate copy required) of fields that are considered to be immutable.
|
|
|
+ - `ByteString` now supports writing to a `ByteOutput`, which will directly
|
|
|
+ expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`)
|
|
|
+ to the `ByteOutput` without copying.
|
|
|
+ - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString`
|
|
|
+ instances that are too large to fit in the internal buffer will be
|
|
|
+ (lazily) written to the `ByteOutput` directly.
|
|
|
+ - This allows applications using large `ByteString` fields to avoid
|
|
|
+ duplication of these fields entirely. Such an application can supply a
|
|
|
+ `ByteOutput` that chains together the chunks received from
|
|
|
+ `CodedOutputStream` before forwarding them onto the IO system.
|
|
|
+ * Other related changes to `CodedOutputStream`
|
|
|
+ - Additional use of `sun.misc.Unsafe` where possible to perform fast
|
|
|
+ access to `byte[]` and `ByteBuffer` values and avoiding unnecessary
|
|
|
+ range checking.
|
|
|
+ - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the
|
|
|
+ `ByteBuffer` rather than to an intermediate array.
|
|
|
+ * Improved lite-runtime.
|
|
|
+ - Lite protos now implement deep equals/hashCode/toString
|
|
|
+ - Significantly improved the performance of Builder#mergeFrom() and
|
|
|
+ Builder#mergeDelimitedFrom()
|
|
|
+ * Various bug fixes and small feature enhancement.
|
|
|
+ - Fixed stack overflow when in hashCode() for infinite recursive oneofs.
|
|
|
+ - Fixed the lazy field parsing in lite to merge rather than overwrite.
|
|
|
+ - TextFormat now supports reporting line/column numbers on errors.
|
|
|
+ - Updated to add appropriate @Override for better compiler errors.
|
|
|
+
|
|
|
+ Python (Beta)
|
|
|
+ * Added JSON format for Any, Struct, Value and ListValue
|
|
|
+ * [ ] is now accepted for both repeated scalar fields and repeated message
|
|
|
+ fields in text format parser.
|
|
|
+ * Numerical field name is now supported in text format.
|
|
|
+ * Added DiscardUnknownFields API for python protobuf message.
|
|
|
+
|
|
|
+ Objective-C (Beta)
|
|
|
+ * Proto comments now come over as HeaderDoc comments in the generated sources
|
|
|
+ so Xcode can pick them up and display them.
|
|
|
+ * The library headers have been updated to use HeaderDoc comments so Xcode can
|
|
|
+ pick them up and display them.
|
|
|
+ * The per message and per field overhead in both generated code and runtime
|
|
|
+ object sizes was reduced.
|
|
|
+ * Generated code now include deprecated annotations when the proto file
|
|
|
+ included them.
|
|
|
+
|
|
|
+ C# (Beta)
|
|
|
+ In general: some changes are breaking, which require regenerating messages.
|
|
|
+ Most user-written code will not be impacted *except* for the renaming of enum
|
|
|
+ values.
|
|
|
+
|
|
|
+ * Allow custom type URL prefixes in `Any` packing, and ignore them when
|
|
|
+ unpacking
|
|
|
+ * `protoc` is now in a separate NuGet package (Google.Protobuf.Tools)
|
|
|
+ * New option: `internal_access` to generate internal classes
|
|
|
+ * Enum values are now PascalCased, and if there's a prefix which matches the
|
|
|
+ name of the enum, that is removed (so an enum `COLOR` with a value
|
|
|
+ `COLOR_BLUE` would generate a value of just `Blue`). An option
|
|
|
+ (`legacy_enum_values`) is temporarily available to disable this, but the
|
|
|
+ option will be removed for GA.
|
|
|
+ * `json_name` option is now honored
|
|
|
+ * If group tags are encountered when parsing, they are validated more
|
|
|
+ thoroughly (although we don't support actual groups)
|
|
|
+ * NuGet dependencies are better specified
|
|
|
+ * Breaking: `Preconditions` is renamed to `ProtoPreconditions`
|
|
|
+ * Breaking: `GeneratedCodeInfo` is renamed to `GeneratedClrTypeInfo`
|
|
|
+ * `JsonFormatter` now allows writing to a `TextWriter`
|
|
|
+ * New interface, `ICustomDiagnosticMessage` to allow more compact
|
|
|
+ representations from `ToString`
|
|
|
+ * `CodedInputStream` and `CodedOutputStream` now implement `IDisposable`,
|
|
|
+ which simply disposes of the streams they were constructed with
|
|
|
+ * Map fields no longer support null values (in line with other languages)
|
|
|
+ * Improvements in JSON formatting and parsing
|
|
|
+
|
|
|
+ Javascript (Alpha)
|
|
|
+ * Better support for "bytes" fields: bytes fields can be read as either a
|
|
|
+ base64 string or UInt8Array (in environments where TypedArray is supported).
|
|
|
+ * New support for CommonJS imports. This should make it easier to use the
|
|
|
+ JavaScript support in Node.js and tools like WebPack. See js/README.md for
|
|
|
+ more information.
|
|
|
+ * Some significant internal refactoring to simplify and modularize the code.
|
|
|
+
|
|
|
+ Ruby (Alpha)
|
|
|
+ * JSON serialization now properly uses camelCased names, with a runtime option
|
|
|
+ that will preserve original names from .proto files instead.
|
|
|
+ * Well-known types are now included in the distribution.
|
|
|
+ * Release now includes binary gems for Windows, Mac, and Linux instead of just
|
|
|
+ source gems.
|
|
|
+ * Bugfix for serializing oneofs.
|
|
|
+
|
|
|
+ C++/Java Lite (Alpha)
|
|
|
+ A new "lite" generator parameter was introduced in the protoc for C++ and
|
|
|
+ Java for Proto3 syntax messages. Example usage:
|
|
|
+
|
|
|
+ ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto
|
|
|
+
|
|
|
+ The protoc will treat the current input and all the transitive dependencies
|
|
|
+ as LITE. The same generator parameter must be used to generate the
|
|
|
+ dependencies.
|
|
|
+
|
|
|
+ In Proto3 syntax files, "optimized_for=LITE_RUNTIME" is no longer supported.
|
|
|
+
|
|
|
+
|
|
|
2015-12-30 version 3.0.0-beta-2 (C++/Java/Python/Ruby/Nano/Objective-C/C#/JavaScript)
|
|
|
General
|
|
|
* Introduced a new language implementation: JavaScript.
|