The binary-typed package
Binary serialization tagged with type information, allowing for typechecking and useful error messages at the receiving site.
This package serves the same purpose as tagged-binary, with a couple of key differences:
Support of different kinds of serialized type annotations, each with specific strengths and weaknesses.
Error messages can provide details on type errors at the cost of longer message lengths to include the necessary information.
Serialization computationally almost as efficient as Data.Binary when precaching type representations; decoding however is slower. These values obviously depend a lot on the involved data and its type; an example benchmark is shown in the picture below.
No depencency on Internal modules of other libraries, and a very small dependency footprint in general.
For information about usage, see the Data.Binary.Typed.Tutorial module.
Performance-wise, here is a value Right (Left <100 chars lipsum>) of type Either (Char, Int) (Either String (Maybe Integer)) benchmarked using the Hashed type representation:
|Versions||0.1.0.0, 0.1.0.1, 0.1.0.1, 0.2.0.0, 0.2.0.1, 0.2.1.0, 0.2.2, 0.2.3, 0.3, 1.0|
|Dependencies||base (>=4.7 && <5), binary (>=0.7), bytestring (>=0.9), murmur-hash (>=0.1) [details]|
|Maintainer||dluposchainsky on googles email service|
|Source repository||head: git clone https://github.com/quchen/binary-typed|
|Uploaded||Thu Jul 10 16:40:12 UTC 2014 by quchen|
- binary-typed-0.1.0.1.tar.gz [browse] (Cabal source package)
- Package description (included in the package)
For package maintainers and hackage trustees