From 0e4d1ea1169cd4f0dd3b2d354be10aba09b6e59b Mon Sep 17 00:00:00 2001 From: Jisi Liu Date: Tue, 10 May 2016 17:32:35 -0700 Subject: [PATCH 1/3] Initial draft for changelog. --- CHANGES.txt | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index c3503fc8..9eef08d5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,55 @@ +2016-05-10 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 + + C++ (Beta) + * Improved hash maps. TODO(gpike) + * 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 + - 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. TODO(nathanmittler) + * Improved the performance for lite-runtime. TODO(dweis) + * 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. + + Python (Beta) + * TODO(jieluo) + + Objective-C (Beta) + * TODO(thomasvl) + + C# (Beta) + * TODO(jonskeet) + + Javascript (Alpha) + * TODO(haberman) + + C++/Java Lite (Alpha) + A new "lite" generator parameter was introduced in the protoc for C++ and + Java to 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. From 5668e2e42611717142319e0cc4a22035a8be0364 Mon Sep 17 00:00:00 2001 From: Jisi Liu Date: Wed, 11 May 2016 14:57:06 -0700 Subject: [PATCH 2/3] Fix typo. --- CHANGES.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 9eef08d5..7751c91e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -39,7 +39,7 @@ C++/Java Lite (Alpha) A new "lite" generator parameter was introduced in the protoc for C++ and - Java to for Proto3 syntax messages. Example usage: + Java for Proto3 syntax messages. Example usage: ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto From ede9cc4bd575d2c66df65a1d16ed692e533938e4 Mon Sep 17 00:00:00 2001 From: Jisi Liu Date: Wed, 11 May 2016 15:30:21 -0700 Subject: [PATCH 3/3] Update comments for csharp, zero-copy and objc. --- CHANGES.txt | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7751c91e..7254b99c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -12,13 +12,33 @@ - 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. TODO(nathanmittler) + * 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 the performance for lite-runtime. TODO(dweis) * Various bug fixes and small feature enhancement. - Fixed stack overflow when in hashCode() for infinite recursive oneofs. @@ -29,10 +49,42 @@ * TODO(jieluo) Objective-C (Beta) - * TODO(thomasvl) + * 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) - * TODO(jonskeet) + 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) * TODO(haberman)