This project uses Break Versioning.
- Dependency: on Clojars
- Versioning: Break Versioning
This is a non-breaking maintenance release that updates dependencies and includes read support for more native array types to be introduced in a future v3.6 release.
It should be safe to update from (at least) all recent versions of Nippy.
Updating from Nippy | Changes to API? | Changes to byte output? | Rolling update sequence [1] |
---|---|---|---|
v3.4.2 (2024-05-26) |
- | - | - |
v3.4.1 (2024-05-02) |
- | - | - |
v3.4.0 (2024-04-30) |
- | Yes | - |
v3.3.0 (2023-10-11) |
- | - | - |
v3.2.0 (2022-07-18) |
- | - | - |
v3.1.3 (2022-06-23) |
- | - | - |
[1] Relevant only when introducing support for new types, and for users that do rolling updates
If updating from older versions of Nippy, please see the relevant release notes.
As always:
- See operational considerations for info on: data compatibility, rolling updates, rollback support, etc.
- It's always a good idea to ensure adequate testing in your environment before updating against production data!
- Please report any unexpected problems π
- Dependency: on Clojars
- Versioning: Break Versioning
It should be a straight-forward and non-breaking update for almost everyone:
Updating from Nippy | Changes to API? | Changes to byte output? | Rolling update sequence [1] |
---|---|---|---|
v3.4.1 (2024-05-02) |
- | - | - |
v3.4.0 (2024-04-30) |
- | Yes | - |
v3.3.0 (2023-10-11) |
- | - | - |
v3.2.0 (2022-07-18) |
- | - | - |
v3.1.3 (2022-06-23) |
- | - | - |
[1] Relevant only when introducing support for new types, and for users that do rolling updates
If updating from older versions of Nippy, please see the relevant release notes.
As always:
- See operational considerations for info on: data compatibility, rolling updates, rollback support, etc.
- It's always a good idea to ensure adequate testing in your environment before updating against production data!
- Please report any unexpected problems π
Dep: Nippy is on Clojars.
Versioning: Nippy uses Break Versioning.
Like v3.4.0
but introduces an internal mechanism to help make it easier for some users that do rolling updates from earlier versions of Nippy.
Still, the usual warning applies: data frozen by Nippy version X should ideally be thawed by version >= X, otherwise you run the risk of the thaw throwing when unfamiliar types are encountered. Please note that this can affect rolling updates, and can limit your ability to revert a Nippy update. Please ensure adequate testing in your environment before updating against production data!
- [mod] Due to some internal format changes, Nippy
v3.4.1
may produce different serialized output tov3.4.0
and earlier versions of Nippy. Most users won't care about this, but you could be affected if you depend on specific serialized byte values (for example by comparing serialized output between different versions of Nippy).
Dep: Nippy is on Clojars.
Versioning: Nippy uses Break Versioning.
This is a non-breaking feature and maintenance release and should be a safe update for existing users. But as always, please test carefully and report any unexpected problems, thank you! π
IMPORTANT: data frozen by Nippy version X should always be thawed by version >= X, otherwise you run the risk of the thaw throwing when encountering unfamiliar types. Please note that this can affect rolling updates, and can limit your ability to revert a Nippy update. Please ensure adequate testing in your environment before updating against production data.
- 82a050b [mod] Don't attach empty metadata (meta will now be
nil
rather than{}
)
- 92c4a83 [fix] Broken
*final-freeze-fallback*
default val
- fb6f75e [new] Smarter, faster, protocol-based
freezable?
util - 6ad5aeb [new] Add
:zstd
compressor, new compressor backend - 9db09e1 [new] [#163] Track serialized output in tests
- dcc6b08 [new] [#164] Update benchmarks
- f3ff7ae [new] Add native
MapEntry
freezer - 37cf415 [new] [#171] Auto strip metadata protocol extensions
- Misc internal improvements
- Update dependencies
π¦ Available on Clojars, this project uses Break Versioning.
This is a non-breaking feature and maintenance pre-release.
Please test carefully and report any unexpected problems, thank you! π
- fb6f75e [new] Smarter, faster, protocol-based
freezable?
util - 6ad5aeb [new] Add
:zstd
compressor, new compressor backend - 9db09e1 [new] [#163] Track serialized output in tests
- dcc6b08 [new] [#164] Update benchmarks
- f3ff7ae [new] Add native
MapEntry
freezer - 37cf415 [new] [#171] Auto strip metadata protocol extensions
- Misc internal improvements
- 82a050b [mod] Don't attach empty metadata
- 92c4a83 [fix] Broken
*final-freeze-fallback*
default val - 37cf415 [new] [#171] Auto strip metadata protocol extensions
- Update dependencies
π¦ Available on Clojars, this project uses Break Versioning.
This is a non-breaking feature and maintenance pre-release.
Please test carefully and report any unexpected problems, thank you! π
- fb6f75e [new] Smarter, faster, protocol-based
freezable?
util - 6ad5aeb [new] Add
:zstd
compressor, new compressor backend - 9db09e1 [new] [#163] Track serialized output in tests
- dcc6b08 [new] [#164] Update benchmarks
- f3ff7ae [new] Add native
MapEntry
freezer - Misc internal improvements
- cb5b7cf [fix] [#169] Can't auto-identify
:zstd
compressor when decompressing - cb0b871 Revert [mod] 578c585 (upstream fix now available)
- Update dependencies
π¦ Available on Clojars, this project uses Break Versioning.
This is a non-breaking feature and maintenance pre-release.
Please test carefully and report any unexpected problems, thank you! π
- 578c585 [mod] Remove
nippy/snappy-compressor
- fb6f75e [new] Smarter, faster, protocol-based
freezable?
util - 6ad5aeb [new] Add
:zstd
compressor, new compressor backend - 9db09e1 [new] [#163] Track serialized output in tests
- dcc6b08 [new] [#164] Update benchmarks
- f3ff7ae [new] Add native
MapEntry
freezer - Misc internal improvements
π¦ Available on Clojars, this project uses Break Versioning.
Identical to v3.3.0-RC2
.
This is a non-breaking feature and maintenance release.
Please test carefully and report any unexpected problems, thank you! π
- [mod] Due to micro-optimizations of some elementary types, Nippy v3.3 may produce different serialized output to earlier versions of Nippy. Most users won't care about this, but you could be affected if you depend on specific serialized byte values (for example by comparing serialized output between different versions of Nippy).
- fa1cc66 [fix] [#143] Don't freeze meta info for types that don't support
with-meta
- 89f98b4 [new] [#153] PoC: transducer support on thaw
- 60bc4e9 [new] [Storage efficiency] PoC: unsigned counts for small core colls
- 0a9d670 [new] [Storage efficiency] PoC: separate signed long types
- 8778fa4 [new] Include
:bindings
in ex-data of thaw failures - aba153e [new] [#159] Add native impln for
java.sql.Date
(@philomates) - d8b1825 [new] [#158] Add
java.lang.ClassCastException
to default thaw allow list (@carlosgeos) - 8b7186a [new] Update benchmark results
- 3ac06b6 [new] Refactor tools ns, embed dynamic
*freeze-opts*
in wrappers - 129ce95 [new] [#151] [#140] Add experimental
public-types-spec
- Improved some docstrings
- Improved generative unit tests
- Updated internal dependencies
π¦ Available on Clojars
This is a non-breaking feature pre-release.
Please test carefully and report any unexpected problems, thank you! π
- 6ad5aeb [new] Add
:zstd
compressor, new (faster) compressor backend, better docstrings - fb6f75e [new] Smarter, faster, protocol-based
freezable?
util - f3ff7ae [new] Add native
MapEntry
freezer - fef079d [new] Add subvec to stress data
- Misc internal improvements
- e0cd003 [nop] Update docs
- 99970d5 [nop] Update benchmark results
- bcf7673 [nop] Move benchmarks ns under tests dir
π¦ Available on Clojars
Identical to v3.3.0-RC1
except:
- Improves some docstrings
- Improves generative unit tests
- Updates internal dependencies
If no unexpected problems come up, v3.3.0
final is planned for release by the end of September.
π¦ Available on Clojars
This is a non-breaking feature and maintenance pre-release.
Please test carefully and report any unexpected problems, thank you! π
- fa1cc66 [fix] [#143] Don't freeze meta info for types that don't support
with-meta
- 89f98b4 [new] [#153] PoC: transducer support on thaw
- 60bc4e9 [new] [Storage efficiency] PoC: unsigned counts for small core colls
- 0a9d670 [new] [Storage efficiency] PoC: separate signed long types
- 8778fa4 [new] Include
:bindings
in ex-data of thaw failures - aba153e [new] [#159] Add native impln for
java.sql.Date
(@philomates) - d8b1825 [new] [#158] Add
java.lang.ClassCastException
to default thaw allow list (@carlosgeos) - 8b7186a [new] Update benchmark results
- 3ac06b6 [new] Refactor tools ns, embed dynamic
*freeze-opts*
in wrappers - 129ce95 [new] [#151] [#140] Add experimental
public-types-spec
Identical to
v3.2.0-RC3
(2022 Jun 27)
[com.taoensso/nippy "3.2.0"]
This is a non-breaking maintenance release.
See here for recommended steps when updating any Clojure/Script dependencies.
- [#144] [New] Add
org.joda.time.DateTime
todefault-thaw-serializable-allowlist
(@slipset) - [#146] [New] Add Graal native configurations (@FieryCod)
- Bump dependencies, incl. minimum Encore version
- [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive
true
(@RolT) - [#148] [Fix]
tools/freeze
should use*freeze-opts*
even for unwrapped vals - [#145] [Fix] Freezing custom types with munged field names
The boxed Boolean bug has been around since the first version of Nippy and is mostly relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
[com.taoensso/nippy "3.2.0-RC3"]
This is a non-breaking maintenance release.
See here for recommended steps when updating any Clojure/Script dependencies.
- [#144] [New] Add
org.joda.time.DateTime
todefault-thaw-serializable-allowlist
(@slipset) - [#146] [New] Add Graal native configurations (@FieryCod)
- Bump dependencies, incl. minimum Encore version
- [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive
true
(@RolT) - [#148] [Fix]
tools/freeze
should use*freeze-opts*
even for unwrapped vals - [#145] [Fix] Freezing custom types with munged field names
The boxed Boolean bug has been around since the first version of Nippy and is mostly relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
[com.taoensso/nippy "3.2.0-RC2"]
This is a non-breaking maintenance release.
See here for recommended steps when updating any Clojure/Script dependencies.
- [#144] [New] Add
org.joda.time.DateTime
todefault-thaw-serializable-allowlist
(@slipset) - [#146] [New] Add Graal native configurations (@FieryCod)
- Bump dependencies, incl. minimum Encore version
- [#148] [Fix]
tools/freeze
should use*freeze-opts*
even for unwrapped vals - [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive
true
(@RolT)
The boxed Boolean bug has been around since the first version of Nippy and is mostly relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
[com.taoensso/nippy "3.1.3"]
This is a non-breaking, bugfix release.
See here for recommended steps when updating any Clojure/Script dependencies.
- [#148] [Fix]
tools/freeze
should use*freeze-opts*
even for unwrapped vals - [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive
true
(@RolT)
The boxed Boolean bug has been around since the first version of Nippy and is mostly relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
[com.taoensso/nippy "3.1.1"]
This is a non-breaking, bugfix release. But please note that large keywords or symbols (with >127 characters) frozen with >=
v3.1.1
will need >=v3.1.1
to thaw.
- Large keywords and symbols (with >127 characters) can now thaw without throwing (@danmason).
[1] Keywords or symbols with >127 characters in their name
[com.taoensso/nippy "3.1.0"]
This is a non-breaking, minor feature release.
- [#135 #128] Added native
freeze/thaw
support forjava.time
classes on JVM 8+:Instant
,Duration
,Period
. - [#137] Add
thaw-from-resource
convenience util. - Add (DEPRECATED)
swap-serializable-whitelist!
for backwards compatibility.
- Add several standard
java.time
classes to default*thaw-serializable-whitelist*
.
[com.taoensso/nippy "3.1.0-RC1"]
This is a non-breaking, minor feature release.
- [#135 #128] Added native
freeze/thaw
support forjava.time.Instant
on JVM 8+ (@cnuernber).
[com.taoensso/nippy "3.0.0"]
This release is focused on smoothing out rough edges left by
CVE-2020-24164
[#130], and to ease transition from versions of Nippy <v2.15.0 final
.
See here for recommended steps when updating any Clojure/Script dependencies.
Note that there's separate details below for upgrading from v2.15
vs v2.14
:
Usually a non-breaking drop-in replacement, but there's some changes you might like to take advantage of. See [#130] for detailed upgrade instructions.
- [BREAKING] Bumped minimum Clojure version from
v1.5
tov1.7
. - [BREAKING]
:nippy/unthawable
responses now have a standardized form:{:nippy/unthawable {:type _ :cause _ ...}
. Most folks won't care about this change unless they have code specifically to deal with:nippy/unthawable
responses. - [Deprecated]
*serializable-whitelist*
has been split into two separate vars:*freeze-serializable-allowlist*
,*thaw-serializable-allowlist
*. See [#130] for details. - By default,
freeze
now allows the use of Java's Serializable for any class.thaw
continues to be restrictive by default, and will quarantine any objects not on the class allowlist. See [#130] for details.
- [#122] Option to disable freezing and/or thawing of metadata.
freeze
andthaw
now support opts::serializable-allowlist
,:incl-metadata?
.- New
read-quarantined-serializable-object-unsafe!
util to read quarantined Serializable objects. See API docs and/or [#130] for details. - Add
allow-and-record-any-serializable-class-unsafe
util. See API docs and/or [#130] for details.
Likely breaking. Please see [#130] for detailed upgrade instructions.
- [BREAKING] Bumped minimum Clojure version from
v1.5
tov1.7
. - [BREAKING] [#130]
thaw
will now quarantine Serializable objects whose class is not allowed by*thaw-serializable-allowlist*
. See [#130] for details. - [BREAKING]
:nippy/unthawable
responses now have a standardized form:{:nippy/unthawable {:type _ :cause _ ...}
. Most folks won't care about this change unless you have code specifically to deal with:nippy/unthawable
responses. - [#101] Switch default encryptor from
AES-CBC
toAES-GCM
(faster, includes integrity check)
- [#127] Add utils:
freeze-to-string
,thaw-from-string
(@piotr-yuxuan) - [#113 #114] Add support for object arrays (@isaksky)
- [#83 #112] Add support for deftype (@isaksky)
- [#83 #113] Add support for URIs (@isaksky)
- [#126]
extend-freeze
: include id collision odds in docstring
- [#120] Update
freezable?
to covernil
See here for earlier releases.