blob: 342b4bf9a0b51040de2c8df3f37cc72c34f0060f [file] [log] [blame]
kenton@google.com9f175282008-11-25 19:37:10 +000012008-11-25 version 2.0.3:
2
3 protoc
4 * Enum values may now have custom options, using syntax similar to field
5 options.
6 * Fixed bug where .proto files which use custom options but don't actually
7 define them (i.e. they import another .proto file defining the options)
8 had to explicitly import descriptor.proto.
9 * Adjacent string literals in .proto files will now be concatenated, like in
10 C.
kenton@google.com2f669cb2008-12-02 05:59:15 +000011 * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and
12 the import path only contains "." (or contains "." but does not contain
13 the file), protoc incorrectly thought that the file was under ".", because
14 it thought that the path was relative (since it didn't start with a slash).
15 This has been fixed.
kenton@google.com9f175282008-11-25 19:37:10 +000016
17 C++
18 * Generated message classes now have a Swap() method which efficiently swaps
19 the contents of two objects.
20 * All message classes now have a SpaceUsed() method which returns an estimate
21 of the number of bytes of allocated memory currently owned by the object.
22 This is particularly useful when you are reusing a single message object
23 to improve performance but want to make sure it doesn't bloat up too large.
24 * New method Message::SerializeAsString() returns a string containing the
25 serialized data. May be more convenient than calling
26 SerializeToString(string*).
27 * In debug mode, log error messages when string-type fields are found to
28 contain bytes that are not valid UTF-8.
29 * Fixed bug where a message with multiple extension ranges couldn't parse
30 extensions.
31 * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on
32 a message that contained no fields (but possibly contained extensions).
33 * Fixed ShortDebugString() to not be O(n^2). Durr.
34 * Fixed crash in TextFormat parsing if the first token in the input caused a
35 tokenization error.
36 * Fixed obscure bugs in zero_copy_stream_impl.cc.
37 * Added support for HP C++ on Tru64.
38 * Only build tests on "make check", not "make".
39 * Fixed alignment issue that caused crashes when using DynamicMessage on
40 64-bit Sparc machines.
41 * Simplify template usage to work with MSVC 2003.
42 * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup.
43 (This affected Fedora 9 in particular.)
44
45 Java
46 * New overload of mergeFrom() which parses a slice of a byte array instead
47 of the whole thing.
48 * New method ByteString.asReadOnlyByteBuffer() does what it sounds like.
49 * Improved performance of isInitialized() when optimizing for code size.
50
51 Python
52 * Corrected ListFields() signature in Message base class to match what
53 subclasses actually implement.
54 * Some minor refactoring.
kenton@google.com2f669cb2008-12-02 05:59:15 +000055 * Don't pass self as first argument to superclass constructor (no longer
56 allowed in Python 2.6).
kenton@google.com9f175282008-11-25 19:37:10 +000057
kenton@google.com9b10f582008-09-30 00:09:40 +0000582008-09-29 version 2.0.2:
59
kenton@google.com24bf56f2008-09-24 20:31:01 +000060 General
61 * License changed from Apache 2.0 to New BSD.
62 * It is now possible to define custom "options", which are basically
63 annotations which may be placed on definitions in a .proto file.
64 For example, you might define a field option called "foo" like so:
65 import "google/protobuf/descriptor.proto"
66 extend google.protobuf.FieldOptions {
67 optional string foo = 12345;
68 }
69 Then you annotate a field using the "foo" option:
70 message MyMessage {
71 optional int32 some_field = 1 [(foo) = "bar"]
72 }
73 The value of this option is then visible via the message's
74 Descriptor:
75 const FieldDescriptor* field =
76 MyMessage::descriptor()->FindFieldByName("some_field");
77 assert(field->options().GetExtension(foo) == "bar");
78 This feature has been implemented and tested in C++ and Java.
79 Other languages may or may not need to do extra work to support
80 custom options, depending on how they construct descriptors.
81
82 C++
83 * Fixed some GCC warnings that only occur when using -pedantic.
84 * Improved static initialization code, making ordering more
85 predictable among other things.
86 * TextFormat will no longer accept messages which contain multiple
87 instances of a singular field. Previously, the latter instance
kenton@google.com9b10f582008-09-30 00:09:40 +000088 would overwrite the former.
kenton@google.com24bf56f2008-09-24 20:31:01 +000089 * Now works on systems that don't have hash_map.
90
kenton@google.com9b10f582008-09-30 00:09:40 +000091 Java
92 * Print @Override annotation in generated code where appropriate.
93
kenton@google.com24bf56f2008-09-24 20:31:01 +000094 Python
95 * Strings now use the "unicode" type rather than the "str" type.
96 String fields may still be assigned ASCII "str" values; they will
97 automatically be converted.
98 * Adding a property to an object representing a repeated field now
99 raises an exception. For example:
100 # No longer works (and never should have).
101 message.some_repeated_field.foo = 1
kenton@google.com9b10f582008-09-30 00:09:40 +0000102
103 Windows
104 * We now build static libraries rather than DLLs by default on MSVC.
105 See vsprojects/readme.txt for more information.
106
temporala44f3c32008-08-15 18:32:02 +00001072008-08-15 version 2.0.1:
kenton@google.com9b10f582008-09-30 00:09:40 +0000108
109 protoc
110 * New flags --encode and --decode can be used to convert between protobuf text
111 format and binary format from the command-line.
112 * New flag --descriptor_set_out can be used to write FileDescriptorProtos for
113 all parsed files directly into a single output file. This is particularly
114 useful if you wish to parse .proto files from programs written in languages
115 other than C++: just run protoc as a background process and have it output
116 a FileDescriptorList, then parse that natively.
117 * Improved error message when an enum value's name conflicts with another
118 symbol defined in the enum type's scope, e.g. if two enum types declared
119 in the same scope have values with the same name. This is disallowed for
temporala44f3c32008-08-15 18:32:02 +0000120 compatibility with C++, but this wasn't clear from the error.
kenton@google.com9b10f582008-09-30 00:09:40 +0000121 * Fixed absolute output paths on Windows.
temporala44f3c32008-08-15 18:32:02 +0000122 * Allow trailing slashes in --proto_path mappings.
kenton@google.com9b10f582008-09-30 00:09:40 +0000123
124 C++
125 * Reflection objects are now per-class rather than per-instance. To make this
126 possible, the Reflection interface had to be changed such that all methods
127 take the Message instance as a parameter. This change improves performance
128 significantly in memory-bandwidth-limited use cases, since it makes the
129 message objects smaller. Note that source-incompatible interface changes
130 like this will not be made again after the library leaves beta.
temporala44f3c32008-08-15 18:32:02 +0000131 * Heuristically detect sub-messages when printing unknown fields.
kenton@google.com9b10f582008-09-30 00:09:40 +0000132 * Fix static initialization ordering bug that caused crashes at startup when
temporala44f3c32008-08-15 18:32:02 +0000133 compiling on Mac with static linking.
kenton@google.com9b10f582008-09-30 00:09:40 +0000134 * Fixed TokenizerTest when compiling with -DNDEBUG on Linux.
135 * Fixed incorrect definition of kint32min.
temporala44f3c32008-08-15 18:32:02 +0000136 * Fix bytes type setter to work with byte sequences with embedded NULLs.
137 * Other irrelevant tweaks.
138
kenton@google.com9b10f582008-09-30 00:09:40 +0000139 Java
140 * Fixed UnknownFieldSet's parsing of varints larger than 32 bits.
141 * Fixed TextFormat's parsing of "inf" and "nan".
142 * Fixed TextFormat's parsing of comments.
143 * Added info to Java POM that will be required when we upload the
temporala44f3c32008-08-15 18:32:02 +0000144 package to a Maven repo.
145
kenton@google.com9b10f582008-09-30 00:09:40 +0000146 Python
147 * MergeFrom(message) and CopyFrom(message) are now implemented.
148 * SerializeToString() raises an exception if the message is missing required
149 fields.
150 * Code organization improvements.
151 * Fixed doc comments for RpcController and RpcChannel, which had somehow been
temporala44f3c32008-08-15 18:32:02 +0000152 swapped.
kenton@google.com9b10f582008-09-30 00:09:40 +0000153 * Fixed text_format_test on Windows where floating-point exponents sometimes
154 contain extra zeros.
temporala44f3c32008-08-15 18:32:02 +0000155 * Fix Python service CallMethod() implementation.
156
157 Other
158 * Improved readmes.
159 * VIM syntax highlighting improvements.
160
temporal40ee5512008-07-10 02:12:20 +00001612008-07-07 version 2.0.0:
162
163 * First public release.