I just pushed out a wad of changes from our internal branch to SVN. Among
other things, the Python implementation is now around 10-25x faster (but
still pure-python), and protoc now supports a plugin interface for
third-party code generators. Details below.
The changes have only been tested on Linux. They definitely won't work on
Windows at this point. I will fix this over the next few days.
BTW, we are working on some logistical improvements to our release process
that should allow changes to be synchronized more frequently. Currently
there is a lot of work involved, which makes it hard to release more than
once every few months; we hope to change that by automating more of it.
2009-12-17 version 2.3.0:
* Parsers for repeated numeric fields now always accept both packed and
unpacked input. The [packed=true] option only affects serializers.
Therefore, it is possible to switch a field to packed format without
breaking backwards-compatibility -- as long as all parties are using
protobuf 2.3.0 or above, at least.
* The generic RPC service code generated by the C++, Java, and Python
generators can be disabled via file options:
option cc_generic_services = false;
option java_generic_services = false;
option py_generic_services = false;
This allows plugins to generate alternative code, possibly specific to
particular RPC implementation.
* Now supports a plugin system for code generators. Plugins can generate
code for new languages or inject additional code into the output of
code generators. Plugins are just binaries which accept a protocol
on stdin and write a protocol buffer to stdout, so they may be written
any language. See src/google/protobuf/compiler/plugin.proto.
* inf, -inf, and nan can now be used as default values for float and
* Various speed and code size optimizations.
* DynamicMessageFactory is now fully thread-safe.
* Message::Utf8DebugString() method is like DebugString() but avoids
* Compiled-in message types can now contain dynamic extensions, through
* parseDelimitedFrom() and mergeDelimitedFrom() now detect EOF and return
false/null instead of throwing an exception.
* Fixed some initialization ordering bugs.
* Fixes for OpenJDK 7.
* 10-25 times faster than 2.2.0, still pure-Python.
* Calling a mutating method on a sub-message always instantiates the
in its parent even if the mutating method doesn't actually mutate
(e.g. parsing from an empty string).
* Expanded descriptors a bit.
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to
For more options, visit this group at