;; used to fail, the thaw value was an instance of the parent `java.util.Date` class
(require '[taoensso.nippy :as nippy])
(let [sql (java.sql.Date/valueOf "2023-05-01")]
(is (= (type sql)
(-> sql nippy/freeze nippy/thaw type))))
This commit is BREAKING for those still actively using `nippy/cache`.
Data previously frozen using `nippy/cache` can still be thawed, though
support for thawing may also be removed in a future Nippy version.
Motivation for removal:
This cache feature (marked as experimental) was always a bit dubious.
The use cases were very limited, and the complexity quite significant.
I don't believe that the feature has ever had much (any?) public
adoption, so I'm removing it here.
PLEASE LET ME KNOW if this removal negatively impacts you.
Not strictly necessary, but probably not a bad idea to encourage folks
to at least get on v3.x since it does contain relevant performance
improvements.
Shouldn't be any reason preventing folks from using the latest version
of Encore unless they're on a really ancient version of Clojure
(< v1.7 released 2015).
Before this commit:
(freeze true) => froze as primitive `true`
(freeze false) => froze as primitive `false`
(freeze (Boolean. <anything>)) => froze as primitive `true`
After this commit:
Boxed Booleans are first unboxed to correct primitive value before freezing
This was a long-standing bug, though thankfully unlikely to have affected most
users since boxed Booleans are rarely used in Clojure. Cases with Java interop
are the most likely to have been affected.
A big thanks to Roland Thiolliere (@RolT) for this fix!