Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jberryman/hashabler
A haskell library for principled, cross-platform & extensible hashing of types, including an implementation of the FNV-1a algorithm.
https://github.com/jberryman/hashabler
Last synced: about 2 months ago
JSON representation
A haskell library for principled, cross-platform & extensible hashing of types, including an implementation of the FNV-1a algorithm.
- Host: GitHub
- URL: https://github.com/jberryman/hashabler
- Owner: jberryman
- License: bsd-3-clause
- Created: 2015-04-30T15:15:34.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-01-10T04:21:33.000Z (almost 8 years ago)
- Last Synced: 2024-04-26T00:30:53.363Z (8 months ago)
- Language: Haskell
- Size: 6.56 MB
- Stars: 22
- Watchers: 4
- Forks: 4
- Open Issues: 6
-
Metadata Files:
- Readme: README.markdown
- Changelog: CHANGELOG.markdown
- License: LICENSE
Awesome Lists containing this project
README
# Hashabler [![Build Status](https://travis-ci.org/jberryman/hashabler.svg)](https://travis-ci.org/jberryman/hashabler)
This is a haskell library for principled, cross-platform & extensible hashing
of data and types, which includes an implementation of the FNV-1a and SipHash
algorithms. It is a rewrite of the
[hashable](http://hackage.haskell.org/package/hashable) library by Milan Straka
and Johan Tibell, having the following goals:- Extensibility; it should be easy to implement a new hashing algorithm on any
Hashable type, for instance if one needed more hash bits- Honest hashing of values, and principled hashing of algebraic data types (see
e.g. hashable issues 30)- Cross-platform consistent hash values, with a versioning guarantee. Where
possible we ensure morally identical data hashes to indentical values
regardless of processor word size and endianness.- Make implementing identical hash routines in other languages as painless as
possible. We provide an implementation of a simple hashing algorithm (FNV-1a)
and make an effort define Hashable instances in a way that is well-documented
and sensible, so that e.g. one can (hopefully) easily implement string
hashing routine in JavaScript that will match the way we hash strings here.It is available [on hackage](http://hackage.haskell.org/package/hashabler), and
can be installed with:cabal install hashabler
**Versioning**: Except for instances where we specifically note that we make no
promise of consistency, changes to hash values (and consequently changes to
`StableHashable` values, where applicable) entail a major version number bump.