diff --git a/project.clj b/project.clj index 295fbd0..78e5096 100644 --- a/project.clj +++ b/project.clj @@ -1,4 +1,4 @@ -(defproject com.taoensso/nippy "2.9.0-RC1" +(defproject com.taoensso/nippy "2.9.0-RC2" :author "Peter Taoussanis " :description "Clojure serialization library" :url "https://github.com/ptaoussanis/nippy" @@ -14,7 +14,7 @@ :dependencies [[org.clojure/clojure "1.4.0"] [org.clojure/tools.reader "0.9.2"] - [com.taoensso/encore "1.24.1"] + [com.taoensso/encore "1.28.0"] [org.iq80.snappy/snappy "0.3"] [org.tukaani/xz "1.5"] [net.jpountz.lz4/lz4 "1.3"]] diff --git a/src/taoensso/nippy.clj b/src/taoensso/nippy.clj index eee7472..e825440 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -21,7 +21,7 @@ ;;;; Encore version check -(let [min-encore-version 1.21] +(let [min-encore-version 1.28] ; For `backport-run!` support (if-let [assert! (ns-resolve 'taoensso.encore 'assert-min-encore-version)] (assert! min-encore-version) (throw @@ -209,7 +209,8 @@ (println (format "DEBUG - freezer-coll: %s for %s" ~type (type ~'x))))) (if (counted? ~'x) (do (.writeInt ~'out (count ~'x)) - (doseq [i# ~'x] (freeze-to-out ~'out i#))) + ;; (doseq [i# ~'x] (freeze-to-out ~'out i#)) + (encore/backport-run! (fn [i#] (freeze-to-out ~'out i#)) ~'x)) (let [bas# (ByteArrayOutputStream.) sout# (DataOutputStream. bas#) cnt# (reduce (fn [^long cnt# i#] @@ -223,9 +224,14 @@ (defmacro ^:private freezer-kvs [type id & body] `(freezer ~type ~id (.writeInt ~'out (* 2 (count ~'x))) - (doseq [kv# ~'x] - (freeze-to-out ~'out (key kv#)) - (freeze-to-out ~'out (val kv#))))) + ;; (doseq [kv# ~'x] + ;; (freeze-to-out ~'out (key kv#)) + ;; (freeze-to-out ~'out (val kv#))) + (encore/backport-run! + (fn [kv#] + (freeze-to-out ~'out (key kv#)) + (freeze-to-out ~'out (val kv#))) + ~'x))) (freezer (Class/forName "[B") id-bytes (write-bytes out ^bytes x)) (freezer nil id-nil)