diff --git a/project.clj b/project.clj index 4773eab..5e1d1bd 100644 --- a/project.clj +++ b/project.clj @@ -14,7 +14,7 @@ :dependencies [[org.clojure/clojure "1.4.0"] [org.clojure/tools.reader "0.9.2"] - [com.taoensso/encore "1.32.0"] + [com.taoensso/encore "1.38.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 adde63b..a9e8765 100644 --- a/src/taoensso/nippy.clj +++ b/src/taoensso/nippy.clj @@ -2,8 +2,7 @@ "High-performance JVM Clojure serialization library. Originally adapted from Deep-Freeze." {:author "Peter Taoussanis"} - (:require [clojure.tools.reader.edn :as edn] - [taoensso.encore :as encore] + (:require [taoensso.encore :as encore] [taoensso.nippy (utils :as utils) (compression :as compression) @@ -21,7 +20,7 @@ ;;;; Encore version check -(let [min-encore-version 1.28] ; For `backport-run!` support +(let [min-encore-version 1.38] (if-let [assert! (ns-resolve 'taoensso.encore 'assert-min-encore-version)] (assert! min-encore-version) (throw @@ -79,7 +78,7 @@ (def ^:const id-bytes (int 2)) (def ^:const id-nil (int 3)) (def ^:const id-boolean (int 4)) - (def ^:const id-reader (int 5)) ; Fallback #2: pr-str output + (def ^:const id-reader (int 5)) ; Fallback #2 (def ^:const id-serializable (int 6)) ; Fallback #1 (def ^:const id-char (int 10)) @@ -325,7 +324,7 @@ (def ^:dynamic *final-freeze-fallback* "Alpha - subject to change." nil) (defn freeze-fallback-as-str "Alpha-subject to change." [x out] - (freeze-to-out* {:nippy/unfreezable (pr-str x) :type (type x)} out)) + (freeze-to-out* {:nippy/unfreezable (encore/pr-edn x) :type (type x)} out)) (comment (require '[clojure.core.async :as async]) @@ -349,13 +348,13 @@ (do (when-debug-mode (println (format "DEBUG - Reader fallback: %s" (type x)))) (write-id out id-reader) - (write-utf8 out (pr-str x))) + (write-utf8 out (encore/pr-edn x))) :else ; Fallback #3: *final-freeze-fallback* (if-let [ffb *final-freeze-fallback*] (ffb x out) (throw (ex-info (format "Unfreezable type: %s %s" (type x) (str x)) {:type (type x) - :as-str (pr-str x)})))))) + :as-str (encore/pr-edn x)})))))) (def ^:private head-meta-id (reduce-kv #(assoc %1 %3 %2) {} head-meta)) (def ^:private get-head-ba @@ -496,7 +495,7 @@ id-reader (let [edn (read-utf8 in)] (try - (edn/read-string {:readers *data-readers*} edn) + (encore/read-edn {:readers *data-readers*} edn) (catch Exception e {:type :reader :throwable e @@ -581,7 +580,7 @@ id-uuid (UUID. (.readLong in) (.readLong in)) ;;; DEPRECATED - id-old-reader (edn/read-string (.readUTF in)) + id-old-reader (encore/read-edn (.readUTF in)) id-old-string (.readUTF in) id-old-map (apply hash-map (encore/repeatedly-into* [] (* 2 (.readInt in)) (thaw-from-in in))) diff --git a/src/taoensso/nippy/benchmarks.clj b/src/taoensso/nippy/benchmarks.clj index a48ff76..fe379e6 100644 --- a/src/taoensso/nippy/benchmarks.clj +++ b/src/taoensso/nippy/benchmarks.clj @@ -1,7 +1,6 @@ (ns taoensso.nippy.benchmarks {:author "Peter Taoussanis"} - (:require [clojure.tools.reader.edn :as edn] - [clojure.data.fressian :as fressian] + (:require [clojure.data.fressian :as fressian] [taoensso.encore :as encore] [taoensso.nippy :as nippy :refer (freeze thaw)])) @@ -37,8 +36,8 @@ (println (str "\nLap " (inc l) "/" laps "...")) (when reader? ; Slow - (println {:reader (bench1 #(pr-str %) #(edn/read-string %) - #(count (.getBytes ^String % "UTF-8")))})) + (println {:reader (bench1 encore/pr-edn encore/read-edn + #(count (.getBytes ^String % "UTF-8")))})) (println {:default (bench1 #(freeze % {}) #(thaw % {}))}) @@ -59,7 +58,7 @@ (println "\nDone! (Time for cake?)") true) -(comment (edn/read-string (pr-str data)) +(comment (encore/read-edn (encore/pr-edn data)) (bench1 fressian-freeze fressian-thaw)) (comment diff --git a/src/taoensso/nippy/utils.clj b/src/taoensso/nippy/utils.clj index a5b8ca6..aa265ea 100644 --- a/src/taoensso/nippy/utils.clj +++ b/src/taoensso/nippy/utils.clj @@ -1,8 +1,7 @@ (ns taoensso.nippy.utils {:author "Peter Taoussanis"} - (:require [clojure.string :as str] - [clojure.tools.reader.edn :as edn] - [taoensso.encore :as encore]) + (:require [clojure.string :as str] + [taoensso.encore :as encore]) (:import [java.io ByteArrayInputStream ByteArrayOutputStream Serializable ObjectOutputStream ObjectInputStream])) @@ -34,7 +33,7 @@ (cast class object) true))))) -(def readable? (memoize-type-test (fn [x] (-> x pr-str (edn/read-string)) true))) +(def readable? (memoize-type-test (fn [x] (-> x encore/pr-edn encore/read-edn) true))) (comment (serializable? "Hello world")