v3.7.0-RC3 (2026-07-16)
Pre-release- Dependency: on Clojars
- Versioning: Break Versioning
This release candidate fixes two backward-compatibility regressions found after RC2: nested or trailing values after legacy unlength-prefixed Java Serializable data could fail on ByteBuffer thaw paths, and custom extend-freeze implementations could be bypassed by inherited native writers. Both regressions were introduced by v3.7 prerelease internals; v3.6 stable is unaffected.
Nippy v3.7 is a major performance upgrade that includes a significant refactor of Nippy's internals to switch to a more efficient ByteBuffer implementation that's >20% faster in Nippy's standard benchmarks. Huge thanks to @huahaiy for his excellent work on this release! π
As always, please test carefully before updating against production data, and report any unexpected problems - thank you! π
π Migration info
When doing a rolling update (>1 coexisting version) from Nippy <v3.6, please FIRST update to v3.6 THEN to v3.7. This allows read support for new types to fully roll out BEFORE new types may be written.
v3.7 also adds initial read support for retaining PersistentArrayMap types. As usual for new Nippy type IDs, writing remains disabled by default until a subsequent release.
π Change in byte output
v3.7 includes a change in Nippy's byte output for uncounted collections (mostly lazy seqs). Almost no one should care about this, but mentioning for the tiny minority of users that depend on Nippy's byte output remaining stable.
Since v3.7.0-RC2 (2026-06-02)
- [fix] [#190] Read legacy unlength-prefixed Java Serializable data through ByteBuffer thaw paths [7bd95ea]
- [fix] [#190] Restore
extend-freezeprecedence over inherited native writers [ad6e211] - [fix] Bound retained thread-local freeze buffers to 1 MiB [ee0ea59]
- [new] [#191] Initial (read) support for retaining
PersistentArrayMaptypes [7e161f1] - [fix] [#191] Support Clojure v1.13.0-alpha4 map changes [d5132bc, 8e705a6]
Since v3.6.2 (2026-04-09)
- [fix] [#190] Read legacy unlength-prefixed Java Serializable data through ByteBuffer thaw paths [7bd95ea]
- [fix] [#190] Restore
extend-freezeprecedence over inherited native writers [ad6e211] - [fix] Bound retained thread-local freeze buffers to 1 MiB [ee0ea59]
- [new] [#191] Initial (read) support for retaining
PersistentArrayMaptypes [7e161f1] - [fix] [#191] Support Clojure v1.13.0-alpha4 map changes [d5132bc, 8e705a6]
- [fix] Restore native (non-Serializable) writing of primitive numeric arrays [800f95b]
- [new] Initial read support for field-counted deftype serialization, including private/mutable fields (writes gated by target release 370) [b5d803f]
- [new] Faster uncounted coll freezing (new binary output) [940b40a]
- [new] Initial (read) support for much faster primitive num arrays [57616cb]
- [new] [#140] [#190] NB Switch to ByteBuffer implementation, including new
freeze-to-bb!andthaw-from-bb!APIs (@huahaiy) [2c1a487]