binary-typed alternatives and similar packages
Based on the "binary" category.
Alternatively, view binary-typed alternatives based on common mentions on social networks and blogs.
-
binary
Efficient, pure binary serialisation using ByteStrings in Haskell. -
binary-parsers
Extends binary with parsec/attoparsec style parsing combinators -
binary-bits
Binary serialization at the bit level on top of the binary package -
binary-strict
A strict version of the Get monad from the binary package. -
binary-protocol-zmq
Monad to ease implementing a binary network protocol over ZeroMQ -
binary-protocol
Monad to ease implementing a binary network protocol. -
binary-generic
Haskell package making it easy to serialize any kind of data with the binary package. Just derive 'Data' and you're done! -
binary-io
Read and write values of types that implement Binary from and to Handles -
binary-ext
Binary serialisation for Haskell values using lazy ByteStrings -
binary-streams
Allow binary serialization/deserialization using io-streams. -
binary-communicator
Flexible way to ease transmission of binary data.
Updating dependencies is time-consuming.
Do you think we are missing an alternative of binary-typed or a related project?
README
Typed Binary lib
Standard Binary
serializes to ByteString
, which is an untyped format;
deserialization of unexpected input usually results in unusable data.
This module is built around a Typed
type, which allows serializing both a
value and the type of that value; deserialization can then check whether the
received data was sent assuming the right type, and error messages may provide
insight into the type mismatch.
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.
Very small performance overhead compared to using standard
Binary
due to caching when using hashed type information. Since shown and full types are not cached, decoding them has a significant performance hit (ballpark: factor of two).No depencency on
Internal
modules of other libraries, and a very small dependency footprint in general.
For information about usage, see the Tutorial
submodule.
Performance-wise, here is a value Right (Left <100 chars lipsum>)
of
type Either (Char, Int) (Either String (Maybe Integer))
benchmarked
using the Hashed64
type representation:
[](doc/bench-overview.png)
More information can be found on the binary-typed Hackage page, or
you can generate the documentation yourself (via cabal haddock
).