blob: 2ac9091ee2f41c9a0b161148762ff523f4143374 [file] [log] [blame]
kenton@google.com2d6daa72009-01-22 01:27:00 +00001????-??-?? version 2.0.4:
2
3 General
4 * Repeated fields of primitive types (types other that string, group, and
5 nested messages) may now use the option [packed = true] to get a more
6 efficient encoding. In the new encoding, the entire list is written
7 as a single byte blob using the "length-delimited" wire type. Within
8 this blob, the individual values are encoded the same way they would
9 be normally except without a tag before each value (thus, they are
10 tightly "packed").
kenton@google.comcfa2d8a2009-04-18 00:02:12 +000011 * For each field, the generated code contains an integer constant assigned
12 to the field number. For example, the .proto file:
13 message Foo { optional int bar_baz = 123; }
14 would generate the following constants, all with the integer value 123:
15 C++: Foo::kBarBazFieldNumber
16 Java: Foo.BAR_BAZ_FIELD_NUMBER
17 Python: Foo.BAR_BAZ_FIELD_NUMBER
18 Constants are also generated for extensions, with the same naming scheme.
19 These constants may be used as switch cases.
kenton@google.com37ad00d2009-04-21 21:00:39 +000020 * Updated bundled Google Test to version 1.3.0. Google Test is now bundled
21 in its verbatim form as a nested autoconf package, so you can drop in any
22 other version of Google Test if needed.
kenton@google.com2d6daa72009-01-22 01:27:00 +000023
kenton@google.comf663b162009-04-15 19:50:54 +000024 protoc
25 * --error_format=msvs option causes errors to be printed in Visual Studio
26 format, which should allow them to be clicked on in the build log to go
27 directly to the error location.
28
kenton@google.com2d6daa72009-01-22 01:27:00 +000029 C++
30 * UnknownFieldSet now supports STL-like iteration.
31 * Message interface has method ParseFromBoundedZeroCopyStream() which parses
32 a limited number of bytes from an input stream rather than parsing until
33 EOF.
kenton@google.come59427a2009-04-16 22:30:56 +000034 * GzipInputStream and GzipOutputStream support reading/writing gzip- or
35 zlib-compressed streams if zlib is available.
36 (google/protobuf/io/gzip_stream.h)
kenton@google.comeb26a1e2009-04-16 22:43:40 +000037 * Generated constructors explicitly initialize all fields (to avoid warnings
38 with certain compiler settings).
kenton@google.com2d6daa72009-01-22 01:27:00 +000039
40 Java
41 * Fixed bug where Message.mergeFrom(Message) failed to merge extensions.
42 * Message interface has new method toBuilder() which is equivalent to
43 newBuilderForType().mergeFrom(this).
44 * All enums now implement the ProtocolMessageEnum interface.
45 * Setting a field to null now throws NullPointerException.
46 * Fixed tendency for TextFormat's parsing to overflow the stack when
47 parsing large string values. The underlying problem is with Java's
48 regex implementation (which unfortunately uses recursive backtracking
49 rather than building an NFA). Worked around by making use of possesive
50 quantifiers.
pesho.petrov87e64e12008-12-24 01:07:22 +000051
52 Python
53 * Added slicing support for repeated scalar fields. Added slice retrieval and
54 removal of repeated composite fields.
kenton@google.com2d6daa72009-01-22 01:27:00 +000055 * Updated RPC interfaces to allow for blocking operation. A client may
56 now pass None for a callback when making an RPC, in which case the
57 call will block until the response is received, and the response
58 object will be returned directly to the caller. This interface change
59 cannot be used in practice until RPC implementations are updated to
60 implement it.
pesho.petrov87e64e12008-12-24 01:07:22 +000061
kenton@google.com9f175282008-11-25 19:37:10 +0000622008-11-25 version 2.0.3:
63
64 protoc
65 * Enum values may now have custom options, using syntax similar to field
66 options.
67 * Fixed bug where .proto files which use custom options but don't actually
68 define them (i.e. they import another .proto file defining the options)
69 had to explicitly import descriptor.proto.
70 * Adjacent string literals in .proto files will now be concatenated, like in
71 C.
kenton@google.com2f669cb2008-12-02 05:59:15 +000072 * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and
73 the import path only contains "." (or contains "." but does not contain
74 the file), protoc incorrectly thought that the file was under ".", because
75 it thought that the path was relative (since it didn't start with a slash).
76 This has been fixed.
kenton@google.com9f175282008-11-25 19:37:10 +000077
78 C++
79 * Generated message classes now have a Swap() method which efficiently swaps
80 the contents of two objects.
81 * All message classes now have a SpaceUsed() method which returns an estimate
82 of the number of bytes of allocated memory currently owned by the object.
83 This is particularly useful when you are reusing a single message object
84 to improve performance but want to make sure it doesn't bloat up too large.
85 * New method Message::SerializeAsString() returns a string containing the
86 serialized data. May be more convenient than calling
87 SerializeToString(string*).
88 * In debug mode, log error messages when string-type fields are found to
89 contain bytes that are not valid UTF-8.
90 * Fixed bug where a message with multiple extension ranges couldn't parse
91 extensions.
92 * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on
93 a message that contained no fields (but possibly contained extensions).
94 * Fixed ShortDebugString() to not be O(n^2). Durr.
95 * Fixed crash in TextFormat parsing if the first token in the input caused a
96 tokenization error.
97 * Fixed obscure bugs in zero_copy_stream_impl.cc.
98 * Added support for HP C++ on Tru64.
99 * Only build tests on "make check", not "make".
100 * Fixed alignment issue that caused crashes when using DynamicMessage on
101 64-bit Sparc machines.
102 * Simplify template usage to work with MSVC 2003.
103 * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup.
104 (This affected Fedora 9 in particular.)
kenton@google.com25bc5cd2008-12-04 20:34:50 +0000105 * Now works on "Solaris 10 using recent Sun Studio".
kenton@google.com9f175282008-11-25 19:37:10 +0000106
107 Java
108 * New overload of mergeFrom() which parses a slice of a byte array instead
109 of the whole thing.
110 * New method ByteString.asReadOnlyByteBuffer() does what it sounds like.
111 * Improved performance of isInitialized() when optimizing for code size.
112
113 Python
114 * Corrected ListFields() signature in Message base class to match what
115 subclasses actually implement.
116 * Some minor refactoring.
kenton@google.com2f669cb2008-12-02 05:59:15 +0000117 * Don't pass self as first argument to superclass constructor (no longer
118 allowed in Python 2.6).
kenton@google.com9f175282008-11-25 19:37:10 +0000119
kenton@google.com9b10f582008-09-30 00:09:40 +00001202008-09-29 version 2.0.2:
121
kenton@google.com24bf56f2008-09-24 20:31:01 +0000122 General
123 * License changed from Apache 2.0 to New BSD.
124 * It is now possible to define custom "options", which are basically
125 annotations which may be placed on definitions in a .proto file.
126 For example, you might define a field option called "foo" like so:
127 import "google/protobuf/descriptor.proto"
128 extend google.protobuf.FieldOptions {
129 optional string foo = 12345;
130 }
131 Then you annotate a field using the "foo" option:
132 message MyMessage {
133 optional int32 some_field = 1 [(foo) = "bar"]
134 }
135 The value of this option is then visible via the message's
136 Descriptor:
137 const FieldDescriptor* field =
138 MyMessage::descriptor()->FindFieldByName("some_field");
139 assert(field->options().GetExtension(foo) == "bar");
140 This feature has been implemented and tested in C++ and Java.
141 Other languages may or may not need to do extra work to support
142 custom options, depending on how they construct descriptors.
143
144 C++
145 * Fixed some GCC warnings that only occur when using -pedantic.
146 * Improved static initialization code, making ordering more
147 predictable among other things.
148 * TextFormat will no longer accept messages which contain multiple
149 instances of a singular field. Previously, the latter instance
kenton@google.com9b10f582008-09-30 00:09:40 +0000150 would overwrite the former.
kenton@google.com24bf56f2008-09-24 20:31:01 +0000151 * Now works on systems that don't have hash_map.
152
kenton@google.com9b10f582008-09-30 00:09:40 +0000153 Java
154 * Print @Override annotation in generated code where appropriate.
155
kenton@google.com24bf56f2008-09-24 20:31:01 +0000156 Python
157 * Strings now use the "unicode" type rather than the "str" type.
158 String fields may still be assigned ASCII "str" values; they will
159 automatically be converted.
160 * Adding a property to an object representing a repeated field now
161 raises an exception. For example:
162 # No longer works (and never should have).
163 message.some_repeated_field.foo = 1
kenton@google.com9b10f582008-09-30 00:09:40 +0000164
165 Windows
166 * We now build static libraries rather than DLLs by default on MSVC.
167 See vsprojects/readme.txt for more information.
168
temporala44f3c32008-08-15 18:32:02 +00001692008-08-15 version 2.0.1:
kenton@google.com9b10f582008-09-30 00:09:40 +0000170
171 protoc
172 * New flags --encode and --decode can be used to convert between protobuf text
173 format and binary format from the command-line.
174 * New flag --descriptor_set_out can be used to write FileDescriptorProtos for
175 all parsed files directly into a single output file. This is particularly
176 useful if you wish to parse .proto files from programs written in languages
177 other than C++: just run protoc as a background process and have it output
178 a FileDescriptorList, then parse that natively.
179 * Improved error message when an enum value's name conflicts with another
180 symbol defined in the enum type's scope, e.g. if two enum types declared
181 in the same scope have values with the same name. This is disallowed for
temporala44f3c32008-08-15 18:32:02 +0000182 compatibility with C++, but this wasn't clear from the error.
kenton@google.com9b10f582008-09-30 00:09:40 +0000183 * Fixed absolute output paths on Windows.
temporala44f3c32008-08-15 18:32:02 +0000184 * Allow trailing slashes in --proto_path mappings.
kenton@google.com9b10f582008-09-30 00:09:40 +0000185
186 C++
187 * Reflection objects are now per-class rather than per-instance. To make this
188 possible, the Reflection interface had to be changed such that all methods
189 take the Message instance as a parameter. This change improves performance
190 significantly in memory-bandwidth-limited use cases, since it makes the
191 message objects smaller. Note that source-incompatible interface changes
192 like this will not be made again after the library leaves beta.
temporala44f3c32008-08-15 18:32:02 +0000193 * Heuristically detect sub-messages when printing unknown fields.
kenton@google.com9b10f582008-09-30 00:09:40 +0000194 * Fix static initialization ordering bug that caused crashes at startup when
temporala44f3c32008-08-15 18:32:02 +0000195 compiling on Mac with static linking.
kenton@google.com9b10f582008-09-30 00:09:40 +0000196 * Fixed TokenizerTest when compiling with -DNDEBUG on Linux.
197 * Fixed incorrect definition of kint32min.
temporala44f3c32008-08-15 18:32:02 +0000198 * Fix bytes type setter to work with byte sequences with embedded NULLs.
199 * Other irrelevant tweaks.
200
kenton@google.com9b10f582008-09-30 00:09:40 +0000201 Java
202 * Fixed UnknownFieldSet's parsing of varints larger than 32 bits.
203 * Fixed TextFormat's parsing of "inf" and "nan".
204 * Fixed TextFormat's parsing of comments.
205 * Added info to Java POM that will be required when we upload the
temporala44f3c32008-08-15 18:32:02 +0000206 package to a Maven repo.
207
kenton@google.com9b10f582008-09-30 00:09:40 +0000208 Python
209 * MergeFrom(message) and CopyFrom(message) are now implemented.
210 * SerializeToString() raises an exception if the message is missing required
211 fields.
212 * Code organization improvements.
213 * Fixed doc comments for RpcController and RpcChannel, which had somehow been
temporala44f3c32008-08-15 18:32:02 +0000214 swapped.
kenton@google.com9b10f582008-09-30 00:09:40 +0000215 * Fixed text_format_test on Windows where floating-point exponents sometimes
216 contain extra zeros.
temporala44f3c32008-08-15 18:32:02 +0000217 * Fix Python service CallMethod() implementation.
218
219 Other
220 * Improved readmes.
221 * VIM syntax highlighting improvements.
222
temporal40ee5512008-07-10 02:12:20 +00002232008-07-07 version 2.0.0:
224
225 * First public release.