| 2008-11-25 version 2.0.3: |
| |
| protoc |
| * Enum values may now have custom options, using syntax similar to field |
| options. |
| * Fixed bug where .proto files which use custom options but don't actually |
| define them (i.e. they import another .proto file defining the options) |
| had to explicitly import descriptor.proto. |
| * Adjacent string literals in .proto files will now be concatenated, like in |
| C. |
| |
| C++ |
| * Generated message classes now have a Swap() method which efficiently swaps |
| the contents of two objects. |
| * All message classes now have a SpaceUsed() method which returns an estimate |
| of the number of bytes of allocated memory currently owned by the object. |
| This is particularly useful when you are reusing a single message object |
| to improve performance but want to make sure it doesn't bloat up too large. |
| * New method Message::SerializeAsString() returns a string containing the |
| serialized data. May be more convenient than calling |
| SerializeToString(string*). |
| * In debug mode, log error messages when string-type fields are found to |
| contain bytes that are not valid UTF-8. |
| * Fixed bug where a message with multiple extension ranges couldn't parse |
| extensions. |
| * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on |
| a message that contained no fields (but possibly contained extensions). |
| * Fixed ShortDebugString() to not be O(n^2). Durr. |
| * Fixed crash in TextFormat parsing if the first token in the input caused a |
| tokenization error. |
| * Fixed obscure bugs in zero_copy_stream_impl.cc. |
| * Added support for HP C++ on Tru64. |
| * Only build tests on "make check", not "make". |
| * Fixed alignment issue that caused crashes when using DynamicMessage on |
| 64-bit Sparc machines. |
| * Simplify template usage to work with MSVC 2003. |
| * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup. |
| (This affected Fedora 9 in particular.) |
| |
| Java |
| * New overload of mergeFrom() which parses a slice of a byte array instead |
| of the whole thing. |
| * New method ByteString.asReadOnlyByteBuffer() does what it sounds like. |
| * Improved performance of isInitialized() when optimizing for code size. |
| |
| Python |
| * Corrected ListFields() signature in Message base class to match what |
| subclasses actually implement. |
| * Some minor refactoring. |
| |
| 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. |