On Monday, February 25, 2013 at 2:59 PM, Johan Tibell wrote:

> On Mon, Feb 25, 2013 at 4:30 AM, Nicolas Trangez <nico...@incubaid.com 
> (mailto:nico...@incubaid.com)> wrote:
> > - cereal supports chunk-based 'partial' parsing (runGetPartial). It
> > looks like support for this is introduced in recent versions of 'binary'
> > as well (runGetIncremental)
> 
> Yes. Binary now support an incremental interface. We intend to make sure 
> binary has all the same functionality as cereal. We'd like to move away from 
> having two packages if possible and since binary has the larger installed 
> user base we're trying to make that the go-to package.
As a minor side note: Just wanted to point out that safecopy 
(http://hackage.haskell.org/package/safecopy) provides a nice migration 
framework for production use cases and is based on cereal. Migration becomes an 
issue in production sooner or later, and I think safecopy is a nice alternative 
to the approach Google's protocol buffers takes (for example). For eventual 
unification on binary, it may be a good idea to port it (and other useful libs 
that build on cereal) as well. 
>  
> > - cereal can output a strict bytestring (runPut) or a lazy one
> > (runPutLazy), whilst binary only outputs lazy ones (runPut)
> 
> The lazy one is more general and you can use toStrict (from bytestring) to 
> get a strict ByteString from a lazy one, without loss of performance. 
>  
> > - Next to binary and cereal, there's bytestring's Builder interface for
> > serialization, and Simon Meier's "blaze-binary" prototype
> 
> Simon's builder (originally developed in blaze-binary) has been merged into 
> the bytestring package. In the future binary will just re-export that 
> builder. 
>  
> > There are some blog posts and comments out there about merging cereal
> > and binary, is this what's the goal/going on (cfr runGetIncremental)?
> 
> It's most definitely the goal and it's basically done. The only thing I don't 
> think we'll adopt from cereal is the instances from container types. 
>  
> > In my use-case I think using Builder instead of binary/cereal's PutM
> > monad shouldn't be a major problem. Is this advisable performance-wise?
> 
> You can go ahead and use the builder directly if you like.
>  
> > Overall: what's the advised future-proof strategy of handling binary
> > (de)serialization?
> 
> Use binary or the builder from bytestring whenever you can. Since the builder 
> in bytestring was recently added you might have to fall back to blaze-builder 
> if you believe your users can't rely on the latest version of bytestring. 
> 
> -- Johan
>  
> 
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org (mailto:Haskell-Cafe@haskell.org)
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 
> 


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to