Protocol Buffers - Google's data interchange format
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. 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 |
||
---|---|---|
editors | ||
examples | ||
java | ||
m4 | ||
python | ||
src | ||
vsprojects | ||
autogen.sh | ||
CHANGES.txt | ||
configure.ac | ||
CONTRIBUTORS.txt | ||
COPYING.txt | ||
generate_descriptor_proto.sh | ||
INSTALL.txt | ||
Makefile.am | ||
README.txt |
Protocol Buffers - Google's data interchange format Copyright 2008 Google Inc. http://code.google.com/apis/protocolbuffers/ C++ Installation - Unix ======================= To build and install the C++ Protocol Buffer runtime and the Protocol Buffer compiler (protoc) execute the following: $ ./configure $ make $ make check $ make install If "make check" fails, you can still install, but it is likely that some features of this library will not work correctly on your system. Proceed at your own risk. "make install" may require superuser privileges. For advanced usage information on configure and make, see INSTALL.txt. ** Hint on insall location ** By default, the package will be installed to /usr/local. However, on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH. You can add it, but it may be easier to just install to /usr instead. To do this, invoke configure as follows: ./configure --prefix=/usr If you already built the package with a different prefix, make sure to run "make clean" before building again. ** Note for Solaris users ** Solaris 10 x86 has a bug that will make linking fail, complaining about libstdc++.la being invalid. We have included a work-around in this package. To use the work-around, run configure as follows: ./configure LDFLAGS=-L$PWD/src/solaris See src/solaris/libstdc++.la for more info on this bug. C++ Installation - Windows ========================== If you are using Micosoft Visual C++, see vsprojects/readme.txt. If you are using Cygwin or MinGW, follow the Unix installation instructions, above. Binary Compatibility Warning ============================ Due to the nature of C++, it is unlikely that any two versions of the Protocol Buffers C++ runtime libraries will have compatible ABIs. That is, if you linked an executable against an older version of libprotobuf, it is unlikely to work with a newer version without re-compiling. This problem, when it occurs, will normally be detected immediately on startup of your app. Still, you may want to consider using static linkage. You can configure this package to install static libraries only using: ./configure --disable-shared Java and Python Installation ============================ The Java and Python runtime libraries for Protocol Buffers are located in the java and python directories. See the README file in each directory for more information on how to compile and install them. Note that both of them require you to first install the Protocol Buffer compiler (protoc), which is part of the C++ package. Usage ===== The complete documentation for Protocol Buffers is available via the web at: http://code.google.com/apis/protocolbuffers/