ANN: version 2.0.0 of protocol-buffers, protocol-buffers-descriptor, hprotoc

A new major version of the Haskell implementation of Google's protocol buffers is done. The new code is in the usual three packages at http://hackage.haskell.org/package/protocol-buffers http://hackage.haskell.org/package/protocol-buffers-descriptor http://hackage.haskell.org/package/hprotoc The darcs repository is still at http://code.haskell.org/protocol-buffers/ This is the first release where performance was tested and improved: specifically parsing messages from the wire protocol. The new library now defaults to using strict fields for generated messages. This vastly improves the memory usage when getting messages from the binary format. The old lazy fields can still be generated by hprotoc with a new command line option. On "OS X" with 64-bit ghc the C++ loading is 0.5 seconds and Haskell is 1.6 seconds (128 MB memory usage). This is down from 8.3 seconds (1597 MB memory usage). A related change in version 2.0.0 is that 'mergeEmpty' no longer exists. With strict messages and required fields this would have been a dangerous value to keep. If you used this, then please use 'defaultValue' instead. The Haskell code has been compiled against Google's version 2.4.0a proto files. But the Haskell code is only compatible up to Google's version 2.3.0, and in particular the new default message syntax is not yet supported in the 'hprotoc' parser. -- Chris

Ok, I was crap at editing the hprotoc.cabal file. I have uploaded version 2.0.2 of all three to fix this. As a small bonus some decoding should be more efficient than in 2.0.0 since I "unrolled" decoding the 7-bit integer format. -- Chris On 10/05/2011 15:49, haskell@list.mightyreason.com wrote:
A new major version of the Haskell implementation of Google's protocol buffers is done.
The new code is in the usual three packages at http://hackage.haskell.org/package/protocol-buffers http://hackage.haskell.org/package/protocol-buffers-descriptor http://hackage.haskell.org/package/hprotoc
The darcs repository is still at http://code.haskell.org/protocol-buffers/
This is the first release where performance was tested and improved: specifically parsing messages from the wire protocol. The new library now defaults to using strict fields for generated messages. This vastly improves the memory usage when getting messages from the binary format. The old lazy fields can still be generated by hprotoc with a new command line option.
On "OS X" with 64-bit ghc the C++ loading is 0.5 seconds and Haskell is 1.6 seconds (128 MB memory usage). This is down from 8.3 seconds (1597 MB memory usage).
A related change in version 2.0.0 is that 'mergeEmpty' no longer exists. With strict messages and required fields this would have been a dangerous value to keep. If you used this, then please use 'defaultValue' instead.
The Haskell code has been compiled against Google's version 2.4.0a proto files. But the Haskell code is only compatible up to Google's version 2.3.0, and in particular the new default message syntax is not yet supported in the 'hprotoc' parser.
participants (2)
-
Chris Kuklewicz
-
haskell@list.mightyreason.com