Skip to content

v3.7.0-RC3 (2026-07-16)

Pre-release
Pre-release

Choose a tag to compare

@ptaoussanis ptaoussanis released this 16 Jul 11:37

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! πŸ™

- Peter Taoussanis

πŸ‘‰ 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-freeze precedence over inherited native writers [ad6e211]
  • [fix] Bound retained thread-local freeze buffers to 1 MiB [ee0ea59]
  • [new] [#191] Initial (read) support for retaining PersistentArrayMap types [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-freeze precedence over inherited native writers [ad6e211]
  • [fix] Bound retained thread-local freeze buffers to 1 MiB [ee0ea59]
  • [new] [#191] Initial (read) support for retaining PersistentArrayMap types [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! and thaw-from-bb! APIs (@huahaiy) [2c1a487]