binary-tagged: Tagged binary serialisation.

[ bsd3, data, library ] [ Propose Tags ]

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.

benchmarking encode/Binary
time                 362.6 μs   (361.2 μs .. 363.8 μs)

benchmarking encode/Tagged
time                 379.2 μs   (375.5 μs .. 382.2 μs)

benchmarking decode/Binary
time                 366.3 μs   (365.1 μs .. 368.1 μs)

benchmarking decode/Tagged
time                 367.6 μs   (367.0 μs .. 368.2 μs)
Versions [faq] 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
Change log CHANGELOG.md
Dependencies aeson (>=0.8 && <1.5), array (>=0.5.0.0 && <0.6), base (>=4.7.0.2 && <4.13), base16-bytestring (>=0.1.1.6 && <0.2), binary (>=0.7.1.0 && <0.10), bytestring (>=0.10.4.0 && <0.11), containers (>=0.5.5.1 && <0.7), cryptohash-sha1 (>=0.11.100.1 && <0.12), generics-sop (>=0.3.2.0 && <0.6), hashable (>=1.2 && <1.4), nats (>=1.1.2 && <1.2), scientific (==0.3.*), semigroups (>=0.18.5 && <0.20), tagged (>=0.7 && <0.9), text (>=1.2.3.0 && <1.3), time (>=1.4.2 && <1.9), unordered-containers (==0.2.*), vector (>=0.10 && <0.13) [details]
License BSD-3-Clause
Author Oleg Grenrus <oleg.grenrus@iki.fi>
Maintainer Oleg Grenrus <oleg.grenrus@iki.fi>
Category Data
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 Tue May 14 11:30:49 UTC 2019
Distributions Arch:0.2, Debian:0.1.5, LTSHaskell:0.1.5.2, NixOS:0.2, Stackage:0.2
Downloads 6971 total (123 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2019-05-14 [all 1 reports]

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees