my rage from v8 is spilling over
Go to file
kenton@google.com 2d6daa72ab Push out changes from internal codebase.
All Languages
* 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").

C++
* UnknownFieldSet now supports STL-like iteration.
* Message interface has method ParseFromBoundedZeroCopyStream() which parses
  a limited number of bytes from an input stream rather than parsing until
  EOF.

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.

Python
* 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.
2009-01-22 01:27:00 +00:00
editors Integrate changes from internal Google-internal branch. 2008-09-24 20:31:01 +00:00
examples Make Python example output identical to C++ and Java by removing redundant 2008-10-07 02:38:12 +00:00
java Push out changes from internal codebase. 2009-01-22 01:27:00 +00:00
m4 Support "Solaris 10 using recent Sun Studio". 2008-12-04 20:34:50 +00:00
python Push out changes from internal codebase. 2009-01-22 01:27:00 +00:00
src Push out changes from internal codebase. 2009-01-22 01:27:00 +00:00
vsprojects Integrate changes from internal code. 2008-11-21 00:06:27 +00:00
autogen.sh Pass -Wall,no-obsolete to autoreconf. 2008-09-30 22:01:45 +00:00
CHANGES.txt Push out changes from internal codebase. 2009-01-22 01:27:00 +00:00
configure.ac Update trunk version to 2.0.4-SNAPSHOT. 2008-12-05 22:04:06 +00:00
CONTRIBUTORS.txt Adding slicing support for repeated scalar fields and get/delete slice for composite fields. 2008-12-24 01:07:22 +00:00
COPYING.txt Added clarification to license that generated code is owned by the owner of the 2008-09-30 18:30:23 +00:00
generate_descriptor_proto.sh * Avoid using pushd/popd in generate_descriptor_proto.sh because they are 2008-12-02 05:59:15 +00:00
INSTALL.txt Initial checkin. 2008-07-10 02:12:20 +00:00
Makefile.am Push out changes from internal codebase. 2009-01-22 01:27:00 +00:00
post_process_dist.sh Submit script used to post-process dist files. 2008-12-05 18:05:46 +00:00
README.txt Support HP C++ on Tru64. 2008-11-14 17:29:32 +00:00

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 install 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.

** Note for HP C++ Tru64 users **

  To compile invoke configure as follows:

    ./configure CXXFLAGS="-O -std ansi -ieee -D__USE_STD_IOSTREAM"

  Also, you will need to use gmake instead of make.

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/