|
|
@@ -1,3 +1,102 @@
|
|
|
+2015-05-25 version 3.0.0-alpha-3 (Objective-C/C#):
|
|
|
+ General
|
|
|
+ * Introduced two new language implementations (Objective-C, C#) to proto3.
|
|
|
+ * Disallowed "optional" keyword in proto3 syntax.
|
|
|
+ * Removed groups fields in proto3 syntax.
|
|
|
+ * Changed repeated primitive fields to use packed serialization by default in
|
|
|
+ proto3 (implemented for C++, Java, Python in this release). The user can
|
|
|
+ still disable packed serialization by setting packed to false for now.
|
|
|
+ * Added well-known type protos (any.proto, empty.proto, timestamp.proto,
|
|
|
+ duration.proto, etc.). Users can import and use these protos just like
|
|
|
+ regular proto files. Addtional runtime support will be added for them in
|
|
|
+ future releases (in the form of utility helper functions, or having them
|
|
|
+ replaced by language specific types in generated code).
|
|
|
+ * Added a "reserved" keyword in both proto2 and proto3 syntax. User can use
|
|
|
+ this keyword to declare reserved field numbers and names to prevent them
|
|
|
+ from being reused by other fields in the same message.
|
|
|
+
|
|
|
+ To reserve field numbers, add a reserved declaration in your message:
|
|
|
+
|
|
|
+ message TestMessage {
|
|
|
+ reserved 2, 15, 9 to 11, 3;
|
|
|
+ }
|
|
|
+
|
|
|
+ This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of
|
|
|
+ these as field numbers, the protocol buffer compiler will report an error.
|
|
|
+
|
|
|
+ Field names can also be reserved:
|
|
|
+
|
|
|
+ message TestMessage {
|
|
|
+ reserved "foo", "bar";
|
|
|
+ }
|
|
|
+
|
|
|
+ * Various bug fixes since 3.0.0-alpha-2
|
|
|
+
|
|
|
+ Objective-C
|
|
|
+ Objective-C includes a code generator and a native objective-c runtime
|
|
|
+ library. By adding “--objc_out” to protoc, the code generator will generate
|
|
|
+ a header(*.pbobjc.h) and an implementation file(*.pbobjc.m) for each proto
|
|
|
+ file.
|
|
|
+
|
|
|
+ In this first release, the generated interface provides: enums, messages,
|
|
|
+ field support(single, repeated, map, oneof), proto2 and proto3 syntax
|
|
|
+ support, parsing and serialization. It’s compatible with ARC and non-ARC
|
|
|
+ usage. Besides, user can also access it via the swift bridging header.
|
|
|
+
|
|
|
+ See objectivec/README.md for details.
|
|
|
+
|
|
|
+ C#
|
|
|
+ * C# protobufs are based on project
|
|
|
+ https://github.com/jskeet/protobuf-csharp-port. The original project was
|
|
|
+ frozen and all the new development will happen here.
|
|
|
+ * Codegen plugin for C# was completely rewritten to C++ and is now an
|
|
|
+ intergral part of protoc.
|
|
|
+ * Some refactorings and cleanup has been applied to the C# runtime library.
|
|
|
+ * Only proto2 is supported in C# at the moment, proto3 support is in
|
|
|
+ progress and will likely bring significant breaking changes to the API.
|
|
|
+
|
|
|
+ See csharp/README.md for details.
|
|
|
+
|
|
|
+ C++
|
|
|
+ * Added runtime support for Any type. To use Any in your proto file, first
|
|
|
+ import the definition of Any:
|
|
|
+
|
|
|
+ // foo.proto
|
|
|
+ import "google/protobuf/any.proto";
|
|
|
+ message Foo {
|
|
|
+ google.protobuf.Any any_field = 1;
|
|
|
+ }
|
|
|
+ message Bar {
|
|
|
+ int32 value = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ Then in C++ you can access the Any field using PackFrom()/UnpackTo()
|
|
|
+ methods:
|
|
|
+
|
|
|
+ Foo foo;
|
|
|
+ Bar bar = ...;
|
|
|
+ foo.mutable_any_field()->PackFrom(bar);
|
|
|
+ ...
|
|
|
+ if (foo.any_field().IsType<Bar>()) {
|
|
|
+ foo.any_field().UnpackTo(&bar);
|
|
|
+ ...
|
|
|
+ }
|
|
|
+ * In text format, entries of a map field will be sorted by key.
|
|
|
+
|
|
|
+ Java
|
|
|
+ * Continued optimizations on the lite runtime to improve performance for
|
|
|
+ Android.
|
|
|
+
|
|
|
+ Python
|
|
|
+ * Added map support.
|
|
|
+ - maps now have a dict-like interface (msg.map_field[key] = value)
|
|
|
+ - existing code that modifies maps via the repeated field interface
|
|
|
+ will need to be updated.
|
|
|
+
|
|
|
+ Ruby
|
|
|
+ * Improvements to RepeatedField's emulation of the Ruby Array API.
|
|
|
+ * Various speedups and internal cleanups.
|
|
|
+
|
|
|
2015-02-26 version 3.0.0-alpha-2 (Python/Ruby/JavaNano):
|
|
|
General
|
|
|
* Introduced three new language implementations (Ruby, JavaNano, and
|