store: Fast binary serialization

[ data, library, mit, serialization ] [ Propose Tags ]

Flags

Manual Flags

NameDescriptionDefault
comparison-benchDisabled
small-benchDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.2.0.0, 0.2.1.0, 0.2.1.1, 0.2.1.2, 0.3, 0.3.1, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.3.1, 0.4.3.2, 0.5.0, 0.5.0.1, 0.5.1.0, 0.5.1.1, 0.5.1.2, 0.6.0, 0.6.0.1, 0.6.1, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.7.9, 0.7.10, 0.7.11, 0.7.12, 0.7.13, 0.7.14, 0.7.15, 0.7.16, 0.7.17, 0.7.18 (info)
Change log ChangeLog.md
Dependencies array (>=0.5.0.0 && <0.6), base (>=4.7 && <4.10), base-orphans (>=0.4.5 && <0.7), bytestring (>=0.10.4.0 && <0.11), conduit (>=1.2.3.1 && <1.3), containers (>=0.5.5.1 && <0.6), cryptohash (>=0.11.6 && <0.12), deepseq (>=1.3.0.2 && <1.5), fail (>=4.9.0.0 && <4.10), ghc-prim (>=0.3.1.0 && <0.6), hashable (>=1.2.3.1 && <1.3), hspec (>=2.1.2 && <2.5), hspec-smallcheck (>=0.3.0 && <0.5), integer-gmp (>=0.5.1.0 && <1.1), lifted-base (>=0.2.3.3 && <0.3), monad-control (>=0.3.3.0 && <1.1), mono-traversable (>=0.7.0 && <1.1), primitive (>=0.6 && <0.6.2), resourcet (>=1.1.3.3 && <1.2), safe (>=0.3.8 && <0.4), semigroups (>=0.8 && <0.19), smallcheck (>=1.1.1 && <1.2), syb (>=0.4.4 && <0.8), template-haskell (>=2.9.0.0 && <2.12), text (>=1.2.0.4 && <1.3), th-lift (>=0.7.1 && <0.8), th-lift-instances (>=0.1 && <0.2), th-orphans (>=0.13.1 && <0.14), th-reify-many (>=0.1.6 && <0.2), th-utilities (>=0.1.1.0 && <0.2), time (>=1.4.2 && <1.9), transformers (>=0.3.0.0 && <0.6), unordered-containers (>=0.2.5.1 && <0.3), vector (>=0.10.12.3 && <0.13), void (>=0.5.11 && <0.8) [details]
License MIT
Copyright 2016 FP Complete
Author
Maintainer Michael Sloan <sloan@fpcomplete.com>
Revised Revision 4 made by HerbertValerioRiedel at 2017-04-12T20:55:06Z
Category Serialization, Data
Home page https://github.com/fpco/store#readme
Bug tracker https://github.com/fpco/store/issues
Source repo head: git clone https://github.com/fpco/store
Uploaded by MichaelSloan at 2016-05-24T09:14:13Z
Distributions Arch:0.7.18, Debian:0.7.6, LTSHaskell:0.7.18, NixOS:0.7.18, Stackage:0.7.18
Reverse Dependencies 27 direct, 49 indirect [details]
Downloads 32643 total (165 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2016-05-24 [all 1 reports]

Readme for store-0.1.0.1

[back to package description]

store

The 'store' package provides binary serialization of Haskell datatypes. It fills quite a different niche from packages like 'binary' or 'cereal'. In particular:

  • Its primary goal is speed. Whenever possible, direct machine representations are used. For numeric types (Int, Double, Word32, etc) and types that use buffers (Text, ByteString, Vector, etc). This means that much of serialization uses the equivalent of memcpy.

  • By using machine representations, we lose serialization compatibility between different architectures. Store could in theory be used to describe machine-independent serialization formats. However, this is not the usecase it's currently designed for (though utilities might be added for this in the future!)

  • Store will not work at all on architectures which lack unaligned memory access (for example, older ARM processors). This is not a fundamental limitation, but we do not currently require ARM support.

See this blog post which describes the initial motivations and benchmarks that led to the existence of this package.