aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGES.txt
diff options
context:
space:
mode:
authorWink Saville <wink@google.com>2010-05-27 16:25:37 -0700
committerWink Saville <wink@google.com>2010-05-27 16:25:37 -0700
commitfbaaef999ba563838ebd00874ed8a1c01fbf286d (patch)
tree24ff5c76344e90abc5b0fe6f07120ea0d2d011ee /CHANGES.txt
parent79a4a60053f74ab71c7c3ec436d2f6caedc5be61 (diff)
downloadexternal_protobuf-fbaaef999ba563838ebd00874ed8a1c01fbf286d.zip
external_protobuf-fbaaef999ba563838ebd00874ed8a1c01fbf286d.tar.gz
external_protobuf-fbaaef999ba563838ebd00874ed8a1c01fbf286d.tar.bz2
Add protobuf 2.2.0a sources
This is the contents of protobuf-2.2.0a.tar.bz2 from http://code.google.com/p/protobuf/downloads/list and is the base code for the javamicro code generator. Change-Id: Ie9a0440a824d615086445b6636944484b3155afa
Diffstat (limited to 'CHANGES.txt')
-rw-r--r--CHANGES.txt344
1 files changed, 344 insertions, 0 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
new file mode 100644
index 0000000..acd4d40
--- /dev/null
+++ b/CHANGES.txt
@@ -0,0 +1,344 @@
+2009-11-18 version 2.2.0a:
+
+ There is probably no reason to install this release if you have arleady
+ installed 2.2.0.
+
+ C++
+ * Bumped binary interface version number, so that installing libprotobuf.so
+ v2.2.0 doesn't break already-compiled binaries that are linked against
+ v2.1.0. This should have happened as part of the original 2.2.0 release,
+ but somehow was missed.
+
+2009-08-11 version 2.2.0:
+
+ C++
+ * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler
+ to generate code which only depends libprotobuf-lite, which is much smaller
+ than libprotobuf but lacks descriptors, reflection, and some other features.
+ * Fixed bug where Message.Swap(Message) was only implemented for
+ optimize_for_speed. Swap now properly implemented in both modes
+ (Issue 91).
+ * Added RemoveLast and SwapElements(index1, index2) to Reflection
+ interface for repeated elements.
+ * Added Swap(Message) to Reflection interface.
+ * Floating-point literals in generated code that are intended to be
+ single-precision now explicitly have 'f' suffix to avoid pedantic warnings
+ produced by some compilers.
+ * The [deprecated=true] option now causes the C++ code generator to generate
+ a GCC-style deprecation annotation (no-op on other compilers).
+ * google::protobuf::GetEnumDescriptor<SomeGeneratedEnumType>() returns the
+ EnumDescriptor for that type -- useful for templates which cannot call
+ SomeGeneratedEnumType_descriptor().
+ * Various optimizations and obscure bug fixes.
+
+ Java
+ * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler
+ to generate code which only depends libprotobuf-lite, which is much smaller
+ than libprotobuf but lacks descriptors, reflection, and some other features.
+ * Lots of style cleanups.
+
+ Python
+ * Fixed endianness bug with floats and doubles.
+ * Text format parsing support.
+ * Fix bug with parsing packed repeated fields in embedded messages.
+ * Ability to initialize fields by passing keyword args to constructor.
+ * Support iterators in extend and __setslice__ for containers.
+
+2009-05-13 version 2.1.0:
+
+ General
+ * Repeated fields of primitive types (types other that string, group, and
+ nested messages) may now use the option [packed = true] to get a more
+ efficient encoding. In the new encoding, the entire list is written
+ as a single byte blob using the "length-delimited" wire type. Within
+ this blob, the individual values are encoded the same way they would
+ be normally except without a tag before each value (thus, they are
+ tightly "packed").
+ * For each field, the generated code contains an integer constant assigned
+ to the field number. For example, the .proto file:
+ message Foo { optional int bar_baz = 123; }
+ would generate the following constants, all with the integer value 123:
+ C++: Foo::kBarBazFieldNumber
+ Java: Foo.BAR_BAZ_FIELD_NUMBER
+ Python: Foo.BAR_BAZ_FIELD_NUMBER
+ Constants are also generated for extensions, with the same naming scheme.
+ These constants may be used as switch cases.
+ * Updated bundled Google Test to version 1.3.0. Google Test is now bundled
+ in its verbatim form as a nested autoconf package, so you can drop in any
+ other version of Google Test if needed.
+ * optimize_for = SPEED is now the default, by popular demand. Use
+ optimize_for = CODE_SIZE if code size is more important in your app.
+ * It is now an error to define a default value for a repeated field.
+ Previously, this was silently ignored (it had no effect on the generated
+ code).
+ * Fields can now be marked deprecated like:
+ optional int32 foo = 1 [deprecated = true];
+ Currently this does not have any actual effect, but in the future the code
+ generators may generate deprecation annotations in each language.
+ * Cross-compiling should now be possible using the --with-protoc option to
+ configure. See README.txt for more info.
+
+ protoc
+ * --error_format=msvs option causes errors to be printed in Visual Studio
+ format, which should allow them to be clicked on in the build log to go
+ directly to the error location.
+ * The type name resolver will no longer resolve type names to fields. For
+ example, this now works:
+ message Foo {}
+ message Bar {
+ optional int32 Foo = 1;
+ optional Foo baz = 2;
+ }
+ Previously, the type of "baz" would resolve to "Bar.Foo", and you'd get
+ an error because Bar.Foo is a field, not a type. Now the type of "baz"
+ resolves to the message type Foo. This change is unlikely to make a
+ difference to anyone who follows the Protocol Buffers style guide.
+
+ C++
+ * Several optimizations, including but not limited to:
+ - Serialization, especially to flat arrays, is 10%-50% faster, possibly
+ more for small objects.
+ - Several descriptor operations which previously required locking no longer
+ do.
+ - Descriptors are now constructed lazily on first use, rather than at
+ process startup time. This should save memory in programs which do not
+ use descriptors or reflection.
+ - UnknownFieldSet completely redesigned to be more efficient (especially in
+ terms of memory usage).
+ - Various optimizations to reduce code size (though the serialization speed
+ optimizations increased code size).
+ * Message interface has method ParseFromBoundedZeroCopyStream() which parses
+ a limited number of bytes from an input stream rather than parsing until
+ EOF.
+ * GzipInputStream and GzipOutputStream support reading/writing gzip- or
+ zlib-compressed streams if zlib is available.
+ (google/protobuf/io/gzip_stream.h)
+ * DescriptorPool::FindAllExtensions() and corresponding
+ DescriptorDatabase::FindAllExtensions() can be used to enumerate all
+ extensions of a given type.
+ * For each enum type Foo, protoc will generate functions:
+ const string& Foo_Name(Foo value);
+ bool Foo_Parse(const string& name, Foo* result);
+ The former returns the name of the enum constant corresponding to the given
+ value while the latter finds the value corresponding to a name.
+ * RepeatedField and RepeatedPtrField now have back-insertion iterators.
+ * String fields now have setters that take a char* and a size, in addition
+ to the existing ones that took char* or const string&.
+ * DescriptorPool::AllowUnknownDependencies() may be used to tell
+ DescriptorPool to create placeholder descriptors for unknown entities
+ referenced in a FileDescriptorProto. This can allow you to parse a .proto
+ file without having access to other .proto files that it imports, for
+ example.
+ * Updated gtest to latest version. The gtest package is now included as a
+ nested autoconf package, so it should be able to drop new versions into the
+ "gtest" subdirectory without modification.
+
+ Java
+ * Fixed bug where Message.mergeFrom(Message) failed to merge extensions.
+ * Message interface has new method toBuilder() which is equivalent to
+ newBuilderForType().mergeFrom(this).
+ * All enums now implement the ProtocolMessageEnum interface.
+ * Setting a field to null now throws NullPointerException.
+ * Fixed tendency for TextFormat's parsing to overflow the stack when
+ parsing large string values. The underlying problem is with Java's
+ regex implementation (which unfortunately uses recursive backtracking
+ rather than building an NFA). Worked around by making use of possesive
+ quantifiers.
+ * Generated service classes now also generate pure interfaces. For a service
+ Foo, Foo.Interface is a pure interface containing all of the service's
+ defined methods. Foo.newReflectiveService() can be called to wrap an
+ instance of this interface in a class that implements the generic
+ RpcService interface, which provides reflection support that is usually
+ needed by RPC server implementations.
+ * RPC interfaces now support blocking operation in addition to non-blocking.
+ The protocol compiler generates separate blocking and non-blocking stubs
+ which operate against separate blocking and non-blocking RPC interfaces.
+ RPC implementations will have to implement the new interfaces in order to
+ support blocking mode.
+ * New I/O methods parseDelimitedFrom(), mergeDelimitedFrom(), and
+ writeDelimitedTo() read and write "delemited" messages from/to a stream,
+ meaning that the message size precedes the data. This way, you can write
+ multiple messages to a stream without having to worry about delimiting
+ them yourself.
+ * Throw a more descriptive exception when build() is double-called.
+ * Add a method to query whether CodedInputStream is at the end of the input
+ stream.
+ * Add a method to reset a CodedInputStream's size counter; useful when
+ reading many messages with the same stream.
+ * equals() and hashCode() now account for unknown fields.
+
+ Python
+ * Added slicing support for repeated scalar fields. Added slice retrieval and
+ removal of repeated composite fields.
+ * Updated RPC interfaces to allow for blocking operation. A client may
+ now pass None for a callback when making an RPC, in which case the
+ call will block until the response is received, and the response
+ object will be returned directly to the caller. This interface change
+ cannot be used in practice until RPC implementations are updated to
+ implement it.
+ * Changes to input_stream.py should make protobuf compatible with appengine.
+
+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.
+ * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and
+ the import path only contains "." (or contains "." but does not contain
+ the file), protoc incorrectly thought that the file was under ".", because
+ it thought that the path was relative (since it didn't start with a slash).
+ This has been fixed.
+
+ 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.)
+ * Now works on "Solaris 10 using recent Sun Studio".
+
+ 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.
+ * Don't pass self as first argument to superclass constructor (no longer
+ allowed in Python 2.6).
+
+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.