Hey guys,
I didn't see this thread at first, thanks to Johan for bringing it to my attention.
cereal is a fork of binary, and provided a incremental interface before binary did.
It also has a few additional combinators like "isolate" and "label", which is the reason why safecopy uses cereal instead of binary (at least I know it uses "label").
As an experiment, I've wrapped the api of Data.ByteString.Builder and and re-exported it as Data.Binary.Builder, but it turned out that performance got worse. I have yet to look into why.
Once it all seems ok, binary will just wrap and re-export bytestrings builder.
If you use binary or builder doesn't really matter, the basic APIs are very similar. builder can offer some more options if you want to spend more time in tuning for speed.
binary is also already in the HP, since it is bundled with GHC (GHC depends on binary).
In other words, depending on binary should be future-proof.
On another note, binary-0.7 is out, get it while it's hot! :)
Lennart