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