From 28765ac501b1bbc2bbba708a0eecaf9748cdb4d9 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Sat, 23 Jan 2016 11:10:17 +0700 Subject: [PATCH 1/3] Bump deps --- project.clj | 8 ++++---- src/taoensso/nippy.clj | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/project.clj b/project.clj index 11f664d..d54637b 100644 --- a/project.clj +++ b/project.clj @@ -1,6 +1,6 @@ (defproject com.taoensso/nippy "2.11.0-beta1" :author "Peter Taoussanis " - :description "Clojure serialization library" + :description "High-performance serialization library for Clojure" :url "https://github.com/ptaoussanis/nippy" :license {:name "Eclipse Public License" :url "http://www.eclipse.org/legal/epl-v10.html" @@ -15,7 +15,7 @@ :dependencies [[org.clojure/clojure "1.5.1"] [org.clojure/tools.reader "0.10.0"] - [com.taoensso/encore "2.28.0"] + [com.taoensso/encore "2.32.0"] [org.iq80.snappy/snappy "0.4"] [org.tukaani/xz "1.5"] [net.jpountz.lz4/lz4 "1.3"]] @@ -30,12 +30,12 @@ :test {:jvm-opts ["-Xms1024m" "-Xmx2048m"] :dependencies [[org.clojure/test.check "0.9.0"] [org.clojure/data.fressian "0.2.1"] - [org.xerial.snappy/snappy-java "1.1.2"]]} + [org.xerial.snappy/snappy-java "1.1.2.1"]]} :dev [:1.8 :test {:plugins [[lein-pprint "1.1.2"] [lein-ancient "0.6.8"] - [lein-codox "0.9.0"]]}]} + [lein-codox "0.9.1"]]}]} :test-paths ["test" "src"] diff --git a/src/taoensso/nippy.clj b/src/taoensso/nippy.clj index 813e2ca..f0fa701 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -1,6 +1,6 @@ (ns taoensso.nippy - "High-performance JVM Clojure serialization library. Originally adapted from - Deep-Freeze (https://goo.gl/OePPGr)." + "High-performance serialization library for Clojure. + Originally adapted from Deep-Freeze (Ref. https://goo.gl/OePPGr)." {:author "Peter Taoussanis (@ptaoussanis)"} (:require [taoensso.encore :as enc] [taoensso.nippy From 478ed0fbb8e706cf4ab2652059ea36c0c7fbba12 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Sat, 23 Jan 2016 11:45:24 +0700 Subject: [PATCH 2/3] Update README template --- README.md | 108 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 64 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index ade9620..9285817 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,50 @@ -**[API docs][]** | **[CHANGELOG][]** | [other Clojure libs][] | [Twitter][] | [contact/contrib](#contact--contributing) | current [Break Version][]: + +Taoensso open-source + +**[CHANGELOG]** | [API] | current [Break Version]: ```clojure -[com.taoensso/nippy "2.10.0"] ; Stable -[com.taoensso/nippy "2.11.0-beta1"] ; Dev, see CHANGELOG for details +[com.taoensso/nippy "2.10.0"] ; Stable +[com.taoensso/nippy "2.11.0-RC1"] ; See CHANGELOG for details ``` -# Nippy, a Clojure serialization library +# Nippy -Clojure's [rich data types](http://clojure.org/datatypes) are *awesome*. And its [reader](http://clojure.org/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). +## The fastest serialization library for Clojure -Nippy is an attempt to provide a reliable, high-performance **drop-in alternative to the reader**. It's used as the serializer for the [Carmine Redis client](https://github.com/ptaoussanis/carmine), the [Faraday DynamoDB client](https://github.com/ptaoussanis/faraday), and a number of other projects. +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). -## What's in the box™? - * Small, uncomplicated **all-Clojure** library - * **Terrific performance** (the fastest for Clojure that I'm aware of) - * Comprehesive **support for all standard data types** - * **Easily extendable to custom data types** (v2.1+) - * Java's **Serializable** fallback when available (v2.5+) - * **Reader-fallback** for all other types (including Clojure 1.4+ tagged literals) - * **Full test coverage** for every supported type - * Fully pluggable **compression**, including built-in high-performance [LZ4](https://code.google.com/p/lz4/) compressor - * Fully pluggable **encryption**, including built-in high-strength AES128 enabled with a single `:password [:salted "my-password"]` option (v2+) - * Utils for **easy integration into 3rd-party tools/libraries** (v2+) +Nippy is an attempt to provide a reliable, high-performance **drop-in alternative to the reader**. Used by the [Carmine Redis client], the [Faraday DynamoDB client], [PigPen], [Onyx] and others. + +## Features + * Small, uncomplicated **all-Clojure** library + * **Terrific performance** (the fastest for Clojure that I'm aware of) + * Comprehesive **support for all standard data types** + * **Easily extendable to custom data types** (v2.1+) + * Java's **Serializable** fallback when available (v2.5+) + * **Reader-fallback** for all other types (including Clojure 1.4+ tagged literals) + * **Full test coverage** for every supported type + * Fully pluggable **compression**, including built-in high-performance [LZ4] compressor + * Fully pluggable **encryption**, including built-in high-strength AES128 enabled with a single `:password [:salted "my-password"]` option (v2+) + * Utils for **easy integration into 3rd-party tools/libraries** (v2+) ## Getting started -### Dependencies - -Add the necessary dependency to your [Leiningen][] `project.clj` and `require` the library in your ns: +Add the necessary dependency to your project: ```clojure -[com.taoensso/nippy "2.10.0"] ; project.clj -(ns my-app (:require [taoensso.nippy :as nippy])) ; ns +[com.taoensso/nippy "2.10.0"] +``` + +And setup your namespace imports: + +```clojure +(ns my-ns (:require [taoensso.nippy :as nippy])) ``` ### De/serializing -As an example of what Nippy can do, let's take a look at its own reference stress data: +As an example of what it can do, let's take a look at Nippy's own reference stress data: ```clojure nippy/stress-data @@ -120,7 +128,7 @@ Nippy also gives you **dead simple data encryption**. Add a single option to you (nippy/thaw {:password [:salted "my-password"]}) ; Decrypt ``` -There's two default forms of encryption on offer: `:salted` and `:cached`. Each of these makes carefully-chosen trade-offs and is suited to one of two common use cases. See the `aes128-encryptor` [docstring](http://ptaoussanis.github.io/nippy/taoensso.nippy.encryption.html) for a detailed explanation of why/when you'd want one or the other. +There's two default forms of encryption on offer: `:salted` and `:cached`. Each of these makes carefully-chosen trade-offs and is suited to one of two common use cases. See the `aes128-encryptor` [API] docs for a detailed explanation of why/when you'd want one or the other. ### Custom types (v2.1+) @@ -140,33 +148,45 @@ There's two default forms of encryption on offer: `:salted` and `:cached`. Each ## Performance -![Comparison chart](https://github.com/ptaoussanis/nippy/raw/master/benchmarks.png) +![benchmarks-png] -[Detailed benchmark information](https://docs.google.com/spreadsheet/ccc?key=0AuSXb68FH4uhdE5kTTlocGZKSXppWG9sRzA5Y2pMVkE) is available on Google Docs. +[Detailed benchmark info] is available on Google Docs. -## Contact & contributing +## Contacting me / contributions -`lein start-dev` to get a (headless) development repl that you can connect to with [Cider][] (Emacs) or your IDE. +Please use the project's [GitHub issues page] for all questions, ideas, etc. **Pull requests welcome**. See the project's [GitHub contributors page] for a list of contributors. -Please use the project's GitHub [issues page][] for project questions/comments/suggestions/whatever **(pull requests welcome!)**. Am very open to ideas if you have any! +Otherwise, you can reach me at [Taoensso.com]. Happy hacking! -Otherwise reach me (Peter Taoussanis) at [taoensso.com][] or on [Twitter][]. Cheers! +\- [Peter Taoussanis] ## License -Copyright © 2012-2015 Peter Taoussanis. Distributed under the [Eclipse Public License][], the same as Clojure. +Distributed under the [EPL v1.0] \(same as Clojure). +Copyright © 2012-2016 [Peter Taoussanis]. - -[API docs]: http://ptaoussanis.github.io/nippy/ -[CHANGELOG]: https://github.com/ptaoussanis/nippy/releases -[other Clojure libs]: https://www.taoensso.com/clojure -[taoensso.com]: https://www.taoensso.com -[Twitter]: https://twitter.com/ptaoussanis -[issues page]: https://github.com/ptaoussanis/nippy/issues -[commit history]: https://github.com/ptaoussanis/nippy/commits/master + +[Taoensso.com]: https://www.taoensso.com +[Peter Taoussanis]: https://www.taoensso.com +[@ptaoussanis]: https://www.taoensso.com +[More by @ptaoussanis]: https://www.taoensso.com [Break Version]: https://github.com/ptaoussanis/encore/blob/master/BREAK-VERSIONING.md -[Leiningen]: http://leiningen.org/ -[Cider]: https://github.com/clojure-emacs/cider -[CDS]: http://clojure-doc.org/ -[ClojureWerkz]: http://clojurewerkz.org/ -[Eclipse Public License]: https://raw2.github.com/ptaoussanis/nippy/master/LICENSE + + +[CHANGELOG]: https://github.com/ptaoussanis/nippy/releases +[API]: http://ptaoussanis.github.io/nippy/ +[GitHub issues page]: https://github.com/ptaoussanis/nippy/issues +[GitHub contributors page]: https://github.com/ptaoussanis/nippy/graphs/contributors +[EPL v1.0]: https://raw.githubusercontent.com/ptaoussanis/nippy/master/LICENSE +[Hero]: https://raw.githubusercontent.com/ptaoussanis/nippy/master/hero.png "Title" + + +[rich data types]: http://clojure.org/reference/datatypes +[reader]: http://clojure.org/reference/reader +[Carmine Redis client]: https://github.com/ptaoussanis/carmine +[Faraday DynamoDB client]: https://github.com/ptaoussanis/faraday +[PigPen]: https://github.com/Netflix/PigPen +[Onyx]: https://github.com/onyx-platform/onyx +[LZ4]: https://code.google.com/p/lz4/ +[benchmarks-png]: https://github.com/ptaoussanis/nippy/raw/master/benchmarks.png +[Detailed benchmark info]: https://docs.google.com/spreadsheet/ccc?key=0AuSXb68FH4uhdE5kTTlocGZKSXppWG9sRzA5Y2pMVkE \ No newline at end of file From 91ad9656cee5e321739a21ba5a6ab64e1ecc5e41 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Sat, 23 Jan 2016 11:10:34 +0700 Subject: [PATCH 3/3] v2.11.0-RC1 --- CHANGELOG.md | 9 +++++++++ project.clj | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b681322..cdf126b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ > This project uses [Break Versioning](https://github.com/ptaoussanis/encore/blob/master/BREAK-VERSIONING.md) as of **Aug 16, 2014**. +## v2.11.0-RC1 / 2016 Jan 23 + +> Identical to v2.11.0-beta1 (published December 13 2015) + +```clojure +[com.taoensso/nippy "2.11.0-RC1"] +``` + + ## v2.11.0-beta1 / 2015 Dec 13 > This is a major performance release that **drops default support for thawing Nippy v1 archives** but is otherwise non-breaking diff --git a/project.clj b/project.clj index d54637b..5692047 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject com.taoensso/nippy "2.11.0-beta1" +(defproject com.taoensso/nippy "2.11.0-RC1" :author "Peter Taoussanis " :description "High-performance serialization library for Clojure" :url "https://github.com/ptaoussanis/nippy"