# hashes

> hashes, a magmalake tin: The three hashes Iceberg and Parquet actually need — CRC-32, MurmurHash3 x86-32 and XXH64 — in pure Mojo, with no dependencies and no FFI.

[magmalake](https://magmalake.dev/) [hashes](https://magmalake.dev/s/hashes)

The three hashes Iceberg and Parquet actually need — CRC-32, MurmurHash3 x86-32 and XXH64 — in pure Mojo, with no dependencies and no FFI.

Install

```
pixi shelf add hashes-mojo
```

Version

`0.1.3` on mojoshelf

Source

[GitHub](https://github.com/magmalake/hashes.mojo) [README](https://github.com/magmalake/hashes.mojo#readme) [Benchmark history](https://magmalake.github.io/hashes.mojo/benchmarks/)

## Works today

- CRC-32 for page CRCs and deletion-vector checksums
- MurmurHash3 for the Iceberg bucket\[N\] transform
- XXH64 for Parquet bloom filters
- Identical results on every platform

Checked against zlib, mmh3 and xxhash, plus the Iceberg spec's Appendix B vectors

- [thrift](https://magmalake.dev/s/thrift) compact + binary protocol
- [zstd](https://magmalake.dev/s/zstd) libzstd
- [lz4](https://magmalake.dev/s/lz4) liblz4
- [brotli](https://magmalake.dev/s/brotli) libbrotli
- [snappy](https://magmalake.dev/s/snappy) pure Mojo
- [deflate](https://magmalake.dev/s/deflate) DEFLATE · gzip · pure Mojo
- [memory-region](https://magmalake.dev/s/memory-region) bytes addressed by offset · shared mappings
- [threads](https://magmalake.dev/s/threads) pthreads · atomics · parallel\_for
- [Every tin](https://magmalake.dev/tins)

[A magmalake project](https://magmalake.dev/)

Apache 2.0 · © 2026 Marius Seritan
