Clojure's rich data types are awesome. And its reader allows you to take your data just about anywhere. But the reader can be painfully slow when you've got a lot of data to crunch (like when you're serializing to a database).
Nippy is an attempt to provide a reliable, high-performance drop-in alternative to the reader.
See here for earlier releases.
- Small, simple all-Clojure library
- Terrific performance: the best for Clojure that I'm aware of
- Comprehensive support for all standard data types
- Easily extendable to custom data types
- Robust test suite, incl. full coverage for every supported type
- Auto fallback to Java Serializable when available
- Auto fallback to Clojure Reader for all other types (including tagged literals
- Pluggable compression with built-in LZ4, Zstandard, etc.
- Pluggable encryption with built-in AES128
- Tools for easy + robust integration into 3rd-party libraries, etc.
- Powerful thaw transducer for flexible data inspection and transformation
Since its earliest versions, Nippy has consistently been the fastest serialization library for Clojure that I'm aware of. It offers:
- Roundtrip times >12x faster than
tools.readerwith 60% smaller data size.
- Roundtrip times >2x faster than
data.fressianwith 30% smaller data size.
The benchmark code can be easily run in your own environment.
You can help support continued work on this project, thank you!! 🙏