|
|
|
2008-09-29 version 2.0.2:
|
|
|
|
|
|
|
|
General
|
|
|
|
* License changed from Apache 2.0 to New 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:
|
|
|
|
import "google/protobuf/descriptor.proto"
|
|
|
|
extend google.protobuf.FieldOptions {
|
|
|
|
optional string foo = 12345;
|
|
|
|
}
|
|
|
|
Then you annotate a field using the "foo" option:
|
|
|
|
message MyMessage {
|
|
|
|
optional int32 some_field = 1 [(foo) = "bar"]
|
|
|
|
}
|
|
|
|
The value of this option is then visible via the message's
|
|
|
|
Descriptor:
|
|
|
|
const FieldDescriptor* field =
|
|
|
|
MyMessage::descriptor()->FindFieldByName("some_field");
|
|
|
|
assert(field->options().GetExtension(foo) == "bar");
|
|
|
|
This feature has been implemented and tested in C++ and Java.
|
|
|
|
Other languages may or may not need to do extra work to support
|
|
|
|
custom options, depending on how they construct descriptors.
|
|
|
|
|
|
|
|
C++
|
|
|
|
* Fixed some GCC warnings that only occur when using -pedantic.
|
|
|
|
* Improved static initialization code, making ordering more
|
|
|
|
predictable among other things.
|
|
|
|
* TextFormat will no longer accept messages which contain multiple
|
|
|
|
instances of a singular field. Previously, the latter instance
|
|
|
|
would overwrite the former.
|
|
|
|
* Now works on systems that don't have hash_map.
|
|
|
|
|
|
|
|
Java
|
|
|
|
* Print @Override annotation in generated code where appropriate.
|
|
|
|
|
|
|
|
Python
|
|
|
|
* Strings now use the "unicode" type rather than the "str" type.
|
|
|
|
String fields may still be assigned ASCII "str" values; they will
|
|
|
|
automatically be converted.
|
|
|
|
* Adding a property to an object representing a repeated field now
|
|
|
|
raises an exception. For example:
|
|
|
|
# No longer works (and never should have).
|
|
|
|
message.some_repeated_field.foo = 1
|
|
|
|
|
|
|
|
Windows
|
|
|
|
* We now build static libraries rather than DLLs by default on MSVC.
|
|
|
|
See vsprojects/readme.txt for more information.
|
|
|
|
|
|
|
|
2008-08-15 version 2.0.1:
|
|
|
|
|
|
|
|
protoc
|
|
|
|
* New flags --encode and --decode can be used to convert between protobuf text
|
|
|
|
format and binary format from the command-line.
|
|
|
|
* New flag --descriptor_set_out can be used to write FileDescriptorProtos for
|
|
|
|
all parsed files directly into a single output file. This is particularly
|
|
|
|
useful if you wish to parse .proto files from programs written in languages
|
|
|
|
other than C++: just run protoc as a background process and have it output
|
|
|
|
a FileDescriptorList, then parse that natively.
|
|
|
|
* Improved error message when an enum value's name conflicts with another
|
|
|
|
symbol defined in the enum type's scope, e.g. if two enum types declared
|
|
|
|
in the same scope have values with the same name. This is disallowed for
|
|
|
|
compatibility with C++, but this wasn't clear from the error.
|
|
|
|
* Fixed absolute output paths on Windows.
|
|
|
|
* Allow trailing slashes in --proto_path mappings.
|
|
|
|
|
|
|
|
C++
|
|
|
|
* Reflection objects are now per-class rather than per-instance. To make this
|
|
|
|
possible, the Reflection interface had to be changed such that all methods
|
|
|
|
take the Message instance as a parameter. This change improves performance
|
|
|
|
significantly in memory-bandwidth-limited use cases, since it makes the
|
|
|
|
message objects smaller. Note that source-incompatible interface changes
|
|
|
|
like this will not be made again after the library leaves beta.
|
|
|
|
* Heuristically detect sub-messages when printing unknown fields.
|
|
|
|
* Fix static initialization ordering bug that caused crashes at startup when
|
|
|
|
compiling on Mac with static linking.
|
|
|
|
* Fixed TokenizerTest when compiling with -DNDEBUG on Linux.
|
|
|
|
* Fixed incorrect definition of kint32min.
|
|
|
|
* Fix bytes type setter to work with byte sequences with embedded NULLs.
|
|
|
|
* Other irrelevant tweaks.
|
|
|
|
|
|
|
|
Java
|
|
|
|
* Fixed UnknownFieldSet's parsing of varints larger than 32 bits.
|
|
|
|
* Fixed TextFormat's parsing of "inf" and "nan".
|
|
|
|
* Fixed TextFormat's parsing of comments.
|
|
|
|
* Added info to Java POM that will be required when we upload the
|
|
|
|
package to a Maven repo.
|
|
|
|
|
|
|
|
Python
|
|
|
|
* MergeFrom(message) and CopyFrom(message) are now implemented.
|
|
|
|
* SerializeToString() raises an exception if the message is missing required
|
|
|
|
fields.
|
|
|
|
* Code organization improvements.
|
|
|
|
* Fixed doc comments for RpcController and RpcChannel, which had somehow been
|
|
|
|
swapped.
|
|
|
|
* Fixed text_format_test on Windows where floating-point exponents sometimes
|
|
|
|
contain extra zeros.
|
|
|
|
* Fix Python service CallMethod() implementation.
|
|
|
|
|
|
|
|
Other
|
|
|
|
* Improved readmes.
|
|
|
|
* VIM syntax highlighting improvements.
|
|
|
|
|
|
|
|
2008-07-07 version 2.0.0:
|
|
|
|
|
|
|
|
* First public release.
|