binary-tagged: Tagged binary serialisation.

[ bsd3, data, library ] [ Propose Tags ]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.1.0, 0.1.2.0, 0.1.3.0, 0.1.3.1, 0.1.4.0, 0.1.4.1, 0.1.4.2, 0.1.5, 0.1.5.1, 0.1.5.2, 0.2, 0.3, 0.3.1
Change log CHANGELOG.md
Dependencies aeson (>=0.8 && <0.11), array (>=0.5 && <0.6), base (>=4.7 && <4.9), binary (>=0.7 && <0.8), bytestring (>=0.10 && <0.11), containers (>=0.5 && <0.6), generics-sop (>=0.1 && <0.2), hashable (>=1.2 && <1.3), scientific (>=0.3 && <0.4), SHA (>=1.6 && <1.7), tagged (>=0.7 && <0.9), text (>=1.2 && <1.3), time (>=1.4 && <1.6), unordered-containers (>=0.2 && <0.3), vector (>=0.10 && <0.12) [details]
License BSD-3-Clause
Author Oleg Grenrus <oleg.grenrus@iki.fi>
Maintainer Oleg Grenrus <oleg.grenrus@iki.fi>
Category Web
Home page https://github.com/phadej/binary-tagged#readme
Bug tracker https://github.com/phadej/binary-tagged/issues
Source repo head: git clone https://github.com/phadej/binary-tagged
Uploaded by phadej at 2015-10-06T15:25:46Z
Distributions Arch:0.3.1, Debian:0.2, LTSHaskell:0.3.1, NixOS:0.3.1, Stackage:0.3.1
Reverse Dependencies 3 direct, 5 indirect [details]
Downloads 14695 total (51 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for binary-tagged-0.1.2.0

[back to package description]

binary-tagged

Build Status Hackage

Structurally tag binary serialisation stream.

Say you have:

data Record = Record
  { _recordFields :: HM.HashMap Text (Integer, ByteString)
  , _recordEnabled :: Bool
  }
  deriving (Eq, Show, Generic)

instance Binary Record
instance HasStructuralInfo Record
instance HasSemanticVersion Record

then you can serialise and deserialise Record values with a structure tag by simply

encodeTaggedFile "cachefile" record
decodeTaggedFile "cachefile" :: IO Record

If structure of Record changes in between, deserialisation will fail early.

The overhead is next to non-observable, see a simple benchmark and the results.