NB switch to encore edn reader/writer
This commit is contained in:
parent
12d90a05f8
commit
11545690c8
4 changed files with 16 additions and 19 deletions
|
|
@ -14,7 +14,7 @@
|
||||||
:dependencies
|
:dependencies
|
||||||
[[org.clojure/clojure "1.4.0"]
|
[[org.clojure/clojure "1.4.0"]
|
||||||
[org.clojure/tools.reader "0.9.2"]
|
[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.iq80.snappy/snappy "0.3"]
|
||||||
[org.tukaani/xz "1.5"]
|
[org.tukaani/xz "1.5"]
|
||||||
[net.jpountz.lz4/lz4 "1.3"]]
|
[net.jpountz.lz4/lz4 "1.3"]]
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
"High-performance JVM Clojure serialization library. Originally adapted from
|
"High-performance JVM Clojure serialization library. Originally adapted from
|
||||||
Deep-Freeze."
|
Deep-Freeze."
|
||||||
{:author "Peter Taoussanis"}
|
{:author "Peter Taoussanis"}
|
||||||
(:require [clojure.tools.reader.edn :as edn]
|
(:require [taoensso.encore :as encore]
|
||||||
[taoensso.encore :as encore]
|
|
||||||
[taoensso.nippy
|
[taoensso.nippy
|
||||||
(utils :as utils)
|
(utils :as utils)
|
||||||
(compression :as compression)
|
(compression :as compression)
|
||||||
|
|
@ -21,7 +20,7 @@
|
||||||
|
|
||||||
;;;; Encore version check
|
;;;; 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)]
|
(if-let [assert! (ns-resolve 'taoensso.encore 'assert-min-encore-version)]
|
||||||
(assert! min-encore-version)
|
(assert! min-encore-version)
|
||||||
(throw
|
(throw
|
||||||
|
|
@ -79,7 +78,7 @@
|
||||||
(def ^:const id-bytes (int 2))
|
(def ^:const id-bytes (int 2))
|
||||||
(def ^:const id-nil (int 3))
|
(def ^:const id-nil (int 3))
|
||||||
(def ^:const id-boolean (int 4))
|
(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-serializable (int 6)) ; Fallback #1
|
||||||
|
|
||||||
(def ^:const id-char (int 10))
|
(def ^:const id-char (int 10))
|
||||||
|
|
@ -325,7 +324,7 @@
|
||||||
|
|
||||||
(def ^:dynamic *final-freeze-fallback* "Alpha - subject to change." nil)
|
(def ^:dynamic *final-freeze-fallback* "Alpha - subject to change." nil)
|
||||||
(defn freeze-fallback-as-str "Alpha-subject to change." [x out]
|
(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
|
(comment
|
||||||
(require '[clojure.core.async :as async])
|
(require '[clojure.core.async :as async])
|
||||||
|
|
@ -349,13 +348,13 @@
|
||||||
(do (when-debug-mode
|
(do (when-debug-mode
|
||||||
(println (format "DEBUG - Reader fallback: %s" (type x))))
|
(println (format "DEBUG - Reader fallback: %s" (type x))))
|
||||||
(write-id out id-reader)
|
(write-id out id-reader)
|
||||||
(write-utf8 out (pr-str x)))
|
(write-utf8 out (encore/pr-edn x)))
|
||||||
|
|
||||||
:else ; Fallback #3: *final-freeze-fallback*
|
:else ; Fallback #3: *final-freeze-fallback*
|
||||||
(if-let [ffb *final-freeze-fallback*] (ffb x out)
|
(if-let [ffb *final-freeze-fallback*] (ffb x out)
|
||||||
(throw (ex-info (format "Unfreezable type: %s %s" (type x) (str x))
|
(throw (ex-info (format "Unfreezable type: %s %s" (type x) (str x))
|
||||||
{:type (type 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 head-meta-id (reduce-kv #(assoc %1 %3 %2) {} head-meta))
|
||||||
(def ^:private get-head-ba
|
(def ^:private get-head-ba
|
||||||
|
|
@ -496,7 +495,7 @@
|
||||||
id-reader
|
id-reader
|
||||||
(let [edn (read-utf8 in)]
|
(let [edn (read-utf8 in)]
|
||||||
(try
|
(try
|
||||||
(edn/read-string {:readers *data-readers*} edn)
|
(encore/read-edn {:readers *data-readers*} edn)
|
||||||
(catch Exception e
|
(catch Exception e
|
||||||
{:type :reader
|
{:type :reader
|
||||||
:throwable e
|
:throwable e
|
||||||
|
|
@ -581,7 +580,7 @@
|
||||||
id-uuid (UUID. (.readLong in) (.readLong in))
|
id-uuid (UUID. (.readLong in) (.readLong in))
|
||||||
|
|
||||||
;;; DEPRECATED
|
;;; DEPRECATED
|
||||||
id-old-reader (edn/read-string (.readUTF in))
|
id-old-reader (encore/read-edn (.readUTF in))
|
||||||
id-old-string (.readUTF in)
|
id-old-string (.readUTF in)
|
||||||
id-old-map (apply hash-map (encore/repeatedly-into* []
|
id-old-map (apply hash-map (encore/repeatedly-into* []
|
||||||
(* 2 (.readInt in)) (thaw-from-in in)))
|
(* 2 (.readInt in)) (thaw-from-in in)))
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
(ns taoensso.nippy.benchmarks
|
(ns taoensso.nippy.benchmarks
|
||||||
{:author "Peter Taoussanis"}
|
{:author "Peter Taoussanis"}
|
||||||
(:require [clojure.tools.reader.edn :as edn]
|
(:require [clojure.data.fressian :as fressian]
|
||||||
[clojure.data.fressian :as fressian]
|
|
||||||
[taoensso.encore :as encore]
|
[taoensso.encore :as encore]
|
||||||
[taoensso.nippy :as nippy :refer (freeze thaw)]))
|
[taoensso.nippy :as nippy :refer (freeze thaw)]))
|
||||||
|
|
||||||
|
|
@ -37,8 +36,8 @@
|
||||||
(println (str "\nLap " (inc l) "/" laps "..."))
|
(println (str "\nLap " (inc l) "/" laps "..."))
|
||||||
|
|
||||||
(when reader? ; Slow
|
(when reader? ; Slow
|
||||||
(println {:reader (bench1 #(pr-str %) #(edn/read-string %)
|
(println {:reader (bench1 encore/pr-edn encore/read-edn
|
||||||
#(count (.getBytes ^String % "UTF-8")))}))
|
#(count (.getBytes ^String % "UTF-8")))}))
|
||||||
|
|
||||||
(println {:default (bench1 #(freeze % {})
|
(println {:default (bench1 #(freeze % {})
|
||||||
#(thaw % {}))})
|
#(thaw % {}))})
|
||||||
|
|
@ -59,7 +58,7 @@
|
||||||
(println "\nDone! (Time for cake?)")
|
(println "\nDone! (Time for cake?)")
|
||||||
true)
|
true)
|
||||||
|
|
||||||
(comment (edn/read-string (pr-str data))
|
(comment (encore/read-edn (encore/pr-edn data))
|
||||||
(bench1 fressian-freeze fressian-thaw))
|
(bench1 fressian-freeze fressian-thaw))
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
(ns taoensso.nippy.utils
|
(ns taoensso.nippy.utils
|
||||||
{:author "Peter Taoussanis"}
|
{:author "Peter Taoussanis"}
|
||||||
(:require [clojure.string :as str]
|
(:require [clojure.string :as str]
|
||||||
[clojure.tools.reader.edn :as edn]
|
[taoensso.encore :as encore])
|
||||||
[taoensso.encore :as encore])
|
|
||||||
(:import [java.io ByteArrayInputStream ByteArrayOutputStream Serializable
|
(:import [java.io ByteArrayInputStream ByteArrayOutputStream Serializable
|
||||||
ObjectOutputStream ObjectInputStream]))
|
ObjectOutputStream ObjectInputStream]))
|
||||||
|
|
||||||
|
|
@ -34,7 +33,7 @@
|
||||||
(cast class object)
|
(cast class object)
|
||||||
true)))))
|
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
|
(comment
|
||||||
(serializable? "Hello world")
|
(serializable? "Hello world")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue