A library for reading and writing CDB (Constant Database) files.
CDB files are immutable key-value stores, designed for extremely fast and memory-efficient construction and lookup. They can be as large as 4GB, and at no point in their construction or use must all data be loaded into memory. CDB files can contain multiple values for a given key.
For more information on the CDB file format, please see: http://cr.yp.to/cdb.html
Please note, that there is another pure Haskell CDB library on Hackage: http://hackage.haskell.org/package/hs-cdb, using memory mapped bytestrings for IO. It served as an inspiration for this package.
A pure-haskell implementation of the radix-2 DIT version of the Cooley-Tukey FFT algorithm.
A pure priority queue.
This package provides a test program for the pure-priority-queue package.
A Haskell-only implementation of the MD5 digest (hash) algorithm. This now supports the crypto-api class interface.
This package provides pure hash functions for pure and lazy bytestrings, implementing the same interface as the digest package.
For efficiency, use the digest package, which provides FFI bindings to efficient code from zlib, instead.
Performance compared to Data.Digest on a Mac Mini 2010, 2.4GHz Core 2 Duo, using Data.ByteString.Lazy.ByteString:
* Data.Digest.Pure.Adler32: 380 MB/s
* Data.Digest.Adler32: 4906 MB/s
* Data.Digest.Pure.CRC32: 232 MB/s
* Data.Digest.CRC32: 774 MB/s
The Mersenne twister is a pseudorandom number generator developed by Makoto Matsumoto and Takuji Nishimura that is based on a matrix linear recurrence over a finite binary field. It provides for fast generation of very high quality pseudorandom numbers. The source for the C code can be found here:
This library provides a purely functional binding to the 64 bit classic mersenne twister, along with instances of RandomGen, so the generator can be used with System.Random. The generator should typically be a few times faster than the default StdGen (but a tad slower than the impure 'mersenne-random' library based on SIMD instructions and destructive state updates.
To store passwords securely, they should be salted, then hashed with a slow hash function. This library uses PBKDF1-SHA256, and handles all the details. It is implemented in pure Haskell, with no C dependencies. For a faster implementation, the pwstore-fast package has the exact same API but is about 25 times faster due to its use of the cryptohash package, which is partly implemented in C. This pure Haskell version is visibly slower, but still quite usable.
NOTE: Most of the concepts from this package have made it into yesod-core itself since the 1.2 release. Please see http://www.yesodweb.com/blog/2013/03/yesod-dispatch-version-1-2 for more information, or search the Haddocks for LiteApp.
Provides helper functions to simplify programming of Yesod without any code generation or non-Haskell DSLs. Mainly, this is focused on the routing quasi-quoter, though some templating help is provided as well.