memory and related abtraction stuff

Version on this page:0.7@rev:1
LTS Haskell 22.28:0.18.0
Stackage Nightly 2024-07-13:0.18.0
Latest on Hackage:0.18.0

See all snapshots memory appears in

BSD-3-Clause licensed by Vincent Hanquez
Maintained by [email protected]
This version can be pinned in stack with:memory-0.7@sha256:f45af2b5e7abcf5f66673d053d3531a62cd6417b3830c0ae375ee704c4c539c8,3812
Used by 1 package in lts-2.22(full list with versions):


Build Status BSD Haskell

Documentation: memory on hackage

A generic memory and related abstraction for haskell:

  • A polymorphic byte array abstraction and function similar to strict ByteString.
  • Different type of byte array abstraction.
  • Raw memory IO operations (memory set, memory copy, ..)
  • Aliasing with endianness support.

Also provides some useful helpers:


Development versions are an incremental number prefixed by 0. No specific meaning is associated with the versions, specially no API stability.

Production versions : TBD

Coding Style

The coding style of this project mostly follows: haskell-style


memory supports the following platform:

  • Windows >= 7
  • OSX >= 10.8
  • Linux

On the following architectures:

  • x86-64
  • i386

On the following haskell versions:

  • GHC 7.0.x
  • GHC 7.4.x
  • GHC 7.6.x
  • GHC 7.8.x
  • GHC 7.10.x



  • Fix fixed sized scrubber written too hastily, that would zero out memory, as the index was written through byte size, whereas the primitive would consider it as WordX type index. it would helps if Ghc.Prim had better documentation.


  • Fix compilation on architecture where endianness is not a compile time define related to their cabal arch().


  • Add Base32 support (Nicolas Di Prima)
  • Fix build on 32 bit by simplifying scrubber, and adding Word64 type + operations compatibility


  • Add Ord instances for SipHash and FnvHash (Nicolas Di Prima)
  • Fix GHC-7.2 build by defining unsafeShiftL (Adam Bergmark)
  • Fix show instance of Bytes to properly display each bytes instead of just the end one
  • Add View type that emulate a view on a ByteArray type (Nicolas Di Prima)


  • fix missing modules from tests on sdist


  • make concat more generic as to what the output is going to be, and at the same time reduce the constraint on the input to just Access
  • make all byte array operation safer related to negative size. now replicate, zero, and alloc will returns an empty byte array when asking for negative size
  • replace ‘pack’ in Data.ByteArray.Pack by ‘fill’, as to not conflict with ‘Data.ByteArray.pack’. Also swap the length and monadic action to be more naturally used
  • add a deprecated ‘pack’ that alias to ‘fill’ for now
  • loosen constraint of Data.ByteArray.Pack.putBytes from ByteArray to ByteArrayAccess


  • Initial release