nippy/CHANGELOG.md

237 lines
9.1 KiB
Markdown
Raw Normal View History

2023-08-02 12:47:28 +00:00
This project uses [**Break Versioning**](https://www.taoensso.com/break-versioning).
2014-08-15 09:17:09 +00:00
2023-08-02 12:47:28 +00:00
---
2023-08-02 12:09:20 +00:00
# `v3.3.0-RC1` (2023-08-02)
> 📦 [Available on Clojars](https://clojars.org/com.taoensso/nippy/versions/3.3.3-RC1)
This is a non-breaking **feature and maintenance** pre-release.
Please test carefully and report any unexpected problems, thank you! 🙏
## Fixes since `v3.2.0`
* fa1cc66 [fix] [#143] Don't freeze meta info for types that don't support `with-meta`
## New since `v3.2.0`
* 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](https://github.com/taoensso/nippy#performance)
* 3ac06b6 [new] Refactor tools ns, embed dynamic `*freeze-opts*` in wrappers
* 129ce95 [new] [#151] [#140] Add experimental `public-types-spec`
2023-08-02 12:21:56 +00:00
# `v3.2.0` (2022-07-18)
2022-07-18 07:21:55 +00:00
2023-08-02 12:21:56 +00:00
> Identical to `v3.2.0-RC3` (2022 Jun 27)
2022-07-18 07:21:55 +00:00
```clojure
[com.taoensso/nippy "3.2.0"]
```
> This is a non-breaking maintenance release.
2023-08-02 12:47:28 +00:00
> See [here](https://github.com/taoensso/encore#recommended-steps-after-any-significant-dependency-update) for recommended steps when updating any Clojure/Script dependencies.
2022-07-18 07:21:55 +00:00
2023-08-02 12:21:56 +00:00
## New since `v3.1.3`
2022-07-18 07:21:55 +00:00
* [#144] [New] Add `org.joda.time.DateTime` to `default-thaw-serializable-allowlist` (@slipset)
* [#146] [New] Add Graal native configurations (@FieryCod)
2023-08-02 12:21:56 +00:00
## Changes since `v3.1.3`
2022-07-18 07:21:55 +00:00
* Bump dependencies, incl. minimum Encore version
2023-08-02 12:21:56 +00:00
## Fixes since `v3.1.1`
2022-07-18 07:21:55 +00:00
* [#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
2023-08-02 12:47:28 +00:00
relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
2022-07-18 07:21:55 +00:00
2023-08-02 12:21:56 +00:00
# `v3.2.0-RC3` (2022-06-27)
2022-06-27 08:50:00 +00:00
```clojure
[com.taoensso/nippy "3.2.0-RC3"]
```
> This is a non-breaking maintenance release.
2023-08-02 12:47:28 +00:00
> See [here](https://github.com/taoensso/encore#recommended-steps-after-any-significant-dependency-update) for recommended steps when updating any Clojure/Script dependencies.
2022-06-27 08:50:00 +00:00
2023-08-02 12:21:56 +00:00
## New since `v3.1.3`
2022-06-27 08:50:00 +00:00
* [#144] [New] Add `org.joda.time.DateTime` to `default-thaw-serializable-allowlist` (@slipset)
* [#146] [New] Add Graal native configurations (@FieryCod)
2023-08-02 12:21:56 +00:00
## Changes since `v3.1.3`
2022-06-27 08:50:00 +00:00
* Bump dependencies, incl. minimum Encore version
2023-08-02 12:21:56 +00:00
## Fixes since `v3.1.1`
2022-06-27 08:50:00 +00:00
* [#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
2023-08-02 12:47:28 +00:00
relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
2022-06-27 08:50:00 +00:00
2023-08-02 12:21:56 +00:00
# `v3.2.0-RC2` (2022-06-23)
2022-06-23 10:38:11 +00:00
```clojure
2022-06-23 11:18:10 +00:00
[com.taoensso/nippy "3.2.0-RC2"]
2022-06-23 10:38:11 +00:00
```
> This is a non-breaking maintenance release.
2023-08-02 12:47:28 +00:00
> See [here](https://github.com/taoensso/encore#recommended-steps-after-any-significant-dependency-update) for recommended steps when updating any Clojure/Script dependencies.
2022-06-23 10:38:11 +00:00
2023-08-02 12:21:56 +00:00
## New since `v3.1.3`
2022-06-23 10:38:11 +00:00
* [#144] [New] Add `org.joda.time.DateTime` to `default-thaw-serializable-allowlist` (@slipset)
* [#146] [New] Add Graal native configurations (@FieryCod)
2023-08-02 12:21:56 +00:00
## Changes since `v3.1.3`
2022-06-23 10:38:11 +00:00
* Bump dependencies, incl. minimum Encore version
2023-08-02 12:21:56 +00:00
## Fixes since `v3.1.1`
2022-06-23 10:38:11 +00:00
2022-06-23 11:18:10 +00:00
* [#148] [Fix] `tools/freeze` should use `*freeze-opts*` even for unwrapped vals
2022-06-23 10:38:11 +00:00
* [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive `true` (@RolT)
2022-06-23 11:18:10 +00:00
The boxed Boolean bug has been around since the first version of Nippy and is mostly
2023-08-02 12:47:28 +00:00
relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
2022-06-23 10:38:11 +00:00
2023-08-02 12:21:56 +00:00
# `v3.1.3` (2022-06-23)
2022-06-23 09:12:35 +00:00
```clojure
2022-06-23 11:18:10 +00:00
[com.taoensso/nippy "3.1.3"]
2022-06-23 09:12:35 +00:00
```
2022-06-23 10:38:11 +00:00
> This is a non-breaking, bugfix release.
2023-08-02 12:47:28 +00:00
> See [here](https://github.com/taoensso/encore#recommended-steps-after-any-significant-dependency-update) for recommended steps when updating any Clojure/Script dependencies.
2022-06-23 10:38:11 +00:00
2023-08-02 12:21:56 +00:00
## Fixes since `v3.1.1`
2022-06-23 09:12:35 +00:00
2022-06-23 11:18:10 +00:00
* [#148] [Fix] `tools/freeze` should use `*freeze-opts*` even for unwrapped vals
2022-06-23 09:12:35 +00:00
* [#89 #150] [Fix] Boxed Booleans incorrectly freezing to primitive `true` (@RolT)
2022-06-23 11:18:10 +00:00
The boxed Boolean bug has been around since the first version of Nippy and is mostly
2023-08-02 12:47:28 +00:00
relevant to users doing Java interop. For more info see: https://github.com/taoensso/nippy/commit/8909a32bdd654a136da385e0e09c9cc44416f964
2022-06-23 09:12:35 +00:00
2022-06-23 10:38:11 +00:00
2023-08-02 12:21:56 +00:00
# `v3.1.1` (2020-11-18)
2020-11-18 10:55:36 +00:00
```clojure
[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.
2023-08-02 12:21:56 +00:00
## Fixes since `v3.1.0`
2020-11-18 10:55:36 +00:00
* Large keywords and symbols (with >127 characters) can now thaw without throwing (@danmason).
[1] Keywords or symbols with >127 characters in their name
2023-08-02 12:21:56 +00:00
# `v3.1.0` / (2020-11-06)
2020-11-06 14:45:36 +00:00
```clojure
[com.taoensso/nippy "3.1.0"]
```
> This is a non-breaking, minor feature release.
2023-08-02 12:21:56 +00:00
## New since `v3.0.0`
2020-11-06 14:45:36 +00:00
* [#135 #128] Added native `freeze/thaw` support for `java.time` classes on JVM 8+: `Instant`, `Duration`, `Period`.
* [#137] Add `thaw-from-resource` convenience util.
* Add (DEPRECATED) `swap-serializable-whitelist!` for backwards compatibility.
2023-08-02 12:21:56 +00:00
## Changes since `v3.0.0`
2020-11-06 14:45:36 +00:00
* Add several standard `java.time` classes to default `*thaw-serializable-whitelist*`.
2023-08-02 12:21:56 +00:00
## `v3.1.0-RC1` (2020-10-24)
2020-10-24 12:31:37 +00:00
```clojure
[com.taoensso/nippy "3.1.0-RC1"]
```
> This is a non-breaking, minor feature release.
2023-08-02 12:21:56 +00:00
## New since `v3.0.0`
2020-10-24 12:31:37 +00:00
* [#135 #128] Added native `freeze/thaw` support for `java.time.Instant` on JVM 8+ (@cnuernber).
2020-10-24 12:31:37 +00:00
2023-08-02 12:21:56 +00:00
# `v3.0.0` (2020-09-20)
2020-09-20 10:08:16 +00:00
```clojure
[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`.
2023-08-02 12:47:28 +00:00
> See [here](https://github.com/taoensso/encore#recommended-steps-after-any-significant-dependency-update) for recommended steps when updating any Clojure/Script dependencies.
2020-09-20 10:08:16 +00:00
Note that there's **separate details** below for upgrading from `v2.15` vs `v2.14`:
2023-08-02 12:21:56 +00:00
## Upgrading from `v2.15` (usually non-breaking)
2020-09-20 10:08:16 +00:00
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**.
2023-08-02 12:21:56 +00:00
### Changes
2020-09-20 10:08:16 +00:00
- **[BREAKING]** Bumped minimum Clojure version from `v1.5` to `v1.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.
2023-08-02 12:21:56 +00:00
### New
2020-09-20 10:08:16 +00:00
- [#122] Option to disable freezing and/or thawing of metadata.
- `freeze` and `thaw` now support opts: `:serializable-allowlist`, `:incl-metadata?`.
2023-08-02 12:47:28 +00:00
- New `read-quarantined-serializable-object-unsafe!` util to read quarantined Serializable objects. See [API docs](http://taoensso.github.io/nippy/taoensso.nippy.html#var-read-quarantined-serializable-object-unsafe.21) and/or [#130] for details.
- Add `allow-and-record-any-serializable-class-unsafe` util. See [API docs](http://taoensso.github.io/nippy/taoensso.nippy.html#var-allow-and-record-any-serializable-class-unsafe) and/or [#130] for details.
2020-09-20 10:08:16 +00:00
2023-08-02 12:21:56 +00:00
## Upgrading from `v2.14` (may be BREAKING)
2020-09-20 10:08:16 +00:00
Likely breaking. Please see [#130] for **detailed upgrade instructions**.
2023-08-02 12:21:56 +00:00
### Changes
2020-09-11 09:35:19 +00:00
- **[BREAKING]** Bumped minimum Clojure version from `v1.5` to `v1.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` to `AES-GCM` (faster, includes integrity check)
2023-08-02 12:21:56 +00:00
### New
2020-09-11 09:35:19 +00:00
- [#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
2023-08-02 12:21:56 +00:00
### Fixes
2020-09-11 09:35:19 +00:00
- [#120] Update `freezable?` to cover `nil`
2023-08-02 12:47:28 +00:00
---
2023-08-02 12:21:56 +00:00
# Earlier releases
2020-09-11 09:35:19 +00:00
2023-08-02 12:47:28 +00:00
See [here](https://github.com/taoensso/nippy/releases) for earlier releases.