2022-10-28 09:53:23 +00:00
< a href = "https://www.taoensso.com/clojure" title = "More stuff by @ptaoussanis at www.taoensso.com" >< img src = "https://www.taoensso.com/open-source.png" alt = "Taoensso open source" width = "340" /></ a >
[**Documentation** ](#documentation ) | [Latest releases ](#latest-releases ) | [Get support][GitHub issues]
2016-01-23 04:45:24 +00:00
2022-10-28 09:53:23 +00:00
# Nippy
2012-07-01 17:13:32 +00:00
2023-08-02 12:47:28 +00:00
### The fastest serialization library for Clojure
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
Clojure's rich data types are awesome. And its [reader ](https://clojure.org/reference/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).
2020-09-20 10:05:37 +00:00
2022-10-28 09:53:23 +00:00
Nippy is an attempt to provide a reliable, high-performance **drop-in alternative to the reader** .
2020-07-24 16:27:34 +00:00
2023-08-02 12:47:28 +00:00
Used by [Carmine ](https://www.taoensso.com/carmine ), [Faraday ](https://www.taoensso.com/faraday ), [PigPen ](https://github.com/Netflix/PigPen ), [Onyx ](https://github.com/onyx-platform/onyx ),
[XTDB ](https://github.com/xtdb/xtdb ), [Datalevin ](https://github.com/juji-io/datalevin ), and others.
2020-07-24 16:27:34 +00:00
2022-10-28 09:53:23 +00:00
## Latest release/s
2020-07-24 16:27:34 +00:00
2023-09-26 11:23:14 +00:00
- `2023-10-11` `3.3.0` (stable): [changes ](../../releases/tag/v3.3.0 )
- `2023-09-26` `3.4.0-beta1` (dev): [changes ](../../releases/tag/v3.4.0-beta1 )
2016-03-10 07:11:34 +00:00
2022-10-28 09:53:23 +00:00
[![Main tests][Main tests SVG]][Main tests URL]
[![Graal tests][Graal tests SVG]][Graal tests URL]
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
See [here][GitHub releases] for earlier releases.
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
## Why Nippy?
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
- Small, simple **all-Clojure** library
- **Terrific performance**: the [best ](#performance ) for Clojure that I'm aware of
2023-08-02 12:47:28 +00:00
- Comprehensive support for [all standard data types ](../../wiki/1-Getting-started#deserializing )
- Easily extendable to [custom data types ](../../wiki/1-Getting-started#custom-types )
2022-10-28 09:53:23 +00:00
- **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
2023-09-26 11:23:14 +00:00
- Pluggable **compression** with built-in [LZ4 ](https://code.google.com/p/lz4/ ), [Zstandard ](https://facebook.github.io/zstd/ ), etc.
2023-08-02 12:47:28 +00:00
- Pluggable [encryption ](../../wiki/1-Getting-started#encryption ) with built-in AES128
- [Tools ](https://taoensso.github.io/nippy/taoensso.nippy.tools.html ) for easy + robust **integration into 3rd-party libraries** , etc.
- Powerful [thaw transducer ](https://taoensso.github.io/nippy/taoensso.nippy.html#var-*thaw-xform* ) for flexible data inspection and transformation
2013-10-17 10:55:44 +00:00
2022-10-28 09:53:23 +00:00
## Performance
2013-06-12 08:19:09 +00:00
2022-10-28 09:53:23 +00:00
Since its earliest versions, Nippy has consistently been the **fastest serialization library for Clojure** that I'm aware of. It offers:
2013-06-12 08:19:09 +00:00
2022-10-28 09:53:23 +00:00
- Roundtrip times ** >12x faster** than `tools.reader` with **60% smaller** data size.
- Roundtrip times ** >2x faster** than `data.fressian` with **30% smaller** data size.
2013-07-29 08:59:24 +00:00
2023-08-02 12:47:28 +00:00

2013-07-29 08:59:24 +00:00
2023-09-25 16:21:12 +00:00
The [benchmark code ](../../blob/master/test/taoensso/nippy_benchmarks.clj ) can be easily run in your own environment.
2013-07-29 08:59:24 +00:00
2022-10-28 09:53:23 +00:00
## Documentation
2013-07-29 08:59:24 +00:00
2022-10-28 09:53:23 +00:00
- [Full documentation][GitHub wiki] (**getting started** and more)
- Auto-generated API reference: [Codox][Codox docs], [clj-doc][clj-doc docs]
2013-07-29 08:59:24 +00:00
2022-10-28 09:53:23 +00:00
## Funding
2012-07-06 12:53:02 +00:00
2023-08-02 12:47:28 +00:00
You can [help support][sponsor] continued work on this project, thank you!! 🙏
2016-06-10 03:37:29 +00:00
2022-10-28 09:53:23 +00:00
## License
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
Copyright © 2012-2023 [Peter Taoussanis][].
Licensed under [EPL 1.0 ](LICENSE.txt ) (same as Clojure).
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
<!-- Common -->
2012-11-05 17:49:37 +00:00
2022-10-28 09:53:23 +00:00
[GitHub releases]: ../../releases
[GitHub issues]: ../../issues
[GitHub wiki]: ../../wiki
2014-02-25 07:37:27 +00:00
2022-10-28 09:53:23 +00:00
[Peter Taoussanis]: https://www.taoensso.com
[sponsor]: https://www.taoensso.com/sponsor
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
<!-- Project -->
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
[Codox docs]: https://taoensso.github.io/nippy/
[clj-doc docs]: https://cljdoc.org/d/com.taoensso/nippy/
2012-07-06 12:53:02 +00:00
2022-10-28 09:53:23 +00:00
[Clojars SVG]: https://img.shields.io/clojars/v/com.taoensso/nippy.svg
[Clojars URL]: https://clojars.org/com.taoensso/nippy
2014-02-22 18:30:11 +00:00
2022-10-28 09:53:23 +00:00
[Main tests SVG]: https://github.com/taoensso/nippy/actions/workflows/main-tests.yml/badge.svg
[Main tests URL]: https://github.com/taoensso/nippy/actions/workflows/main-tests.yml
[Graal tests SVG]: https://github.com/taoensso/nippy/actions/workflows/graal-tests.yml/badge.svg
[Graal tests URL]: https://github.com/taoensso/nippy/actions/workflows/graal-tests.yml