diff --git a/.travis.yml b/.travis.yml index 0d9ade9..0cf71e5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,4 +4,4 @@ script: lein2 test-all jdk: - openjdk7 - openjdk6 - - oraclejdk7 + - oraclejdk7 \ No newline at end of file diff --git a/README.md b/README.md index 7d89e2d..1a0136e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,11 @@ Current [semantic](http://semver.org/) version: [com.taoensso/nippy "2.0.0-beta1"] ; Development (notes below) ``` -v2 adds pluggable compression, crypto support (also pluggable), an improved API (including much better error messages), easier integration into other tools/libraries, and hugely improved performance. It **is backwards compatible**, but please note that the old `freeze-to-bytes`/`thaw-from-bytes` API has been **deprecated** in favor of `freeze`/`thaw`. **PLEASE REPORT ANY PROBLEMS!** +v2 adds pluggable compression, crypto support (also pluggable), an improved API (including much better error messages), easier integration into other tools/libraries, and hugely improved performance. + +v2 **is backwards compatible**, but please note that the old `freeze-to-bytes`/`thaw-from-bytes` API has been **deprecated** in favor of `freeze`/`thaw`. + +**PLEASE REPORT ANY PROBLEMS!** # Nippy, a Clojure serialization library diff --git a/project.clj b/project.clj index 551f716..64dca4d 100644 --- a/project.clj +++ b/project.clj @@ -5,7 +5,8 @@ :url "http://www.eclipse.org/legal/epl-v10.html"} :dependencies [[org.clojure/clojure "1.4.0"] [expectations "1.4.43"] - [org.iq80.snappy/snappy "0.3"]] + [org.iq80.snappy/snappy "0.3"] + [cc.qbits/grease "0.2.1"]] :profiles {:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]} :1.5 {:dependencies [[org.clojure/clojure "1.5.1"]]} :dev {:dependencies []} @@ -20,4 +21,4 @@ [lein-autoexpect "0.2.5"] [codox "0.6.4"]] :min-lein-version "2.0.0" - :warn-on-reflection true) \ No newline at end of file + :warn-on-reflection true) diff --git a/src/taoensso/nippy.clj b/src/taoensso/nippy.clj index bdc2e33..de014f7 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -6,8 +6,8 @@ (utils :as utils) (compression :as compression :refer (snappy-compressor)) (encryption :as encryption :refer (aes128-encryptor))]) - (:import [java.io DataInputStream DataOutputStream ByteArrayOutputStream - ByteArrayInputStream] + (:import [java.io DataInputStream DataOutputStream] + [cc.qbits.grease.io FastByteArrayInputStream FastByteArrayOutputStream] [clojure.lang Keyword BigInt Ratio PersistentQueue PersistentTreeMap PersistentTreeSet IPersistentList IPersistentVector IPersistentMap IPersistentSet IPersistentCollection])) @@ -171,7 +171,7 @@ compressor snappy-compressor encryptor aes128-encryptor}}]] (when legacy-mode (assert-legacy-args compressor password)) - (let [ba (ByteArrayOutputStream.) + (let [ba (FastByteArrayOutputStream.) stream (DataOutputStream. ba)] (binding [*print-dup* print-dup?] (freeze-to-stream x stream)) (let [ba (.toByteArray ba) @@ -283,7 +283,7 @@ (let [ba data-ba ba (if password (encryption/decrypt encryptor password ba) ba) ba (if compressor (compression/decompress compressor ba) ba) - stream (DataInputStream. (ByteArrayInputStream. ba))] + stream (DataInputStream. (FastByteArrayInputStream. ba))] (binding [*read-eval* read-eval?] (thaw-from-stream stream))) (catch Exception e (cond @@ -390,4 +390,4 @@ :or {compressed? true}}] (thaw ba {:legacy-opts {:compressed? compressed?} :read-eval? read-eval? - :password nil})) \ No newline at end of file + :password nil}))