Commit graph

716 commits

Author SHA1 Message Date
Peter Taoussanis
ae4463a85c [nop] Drop use of deprecated enc/binding 2025-05-04 15:17:13 +02:00
Peter Taoussanis
1b99516177 [doc] Misc improvements 2025-04-15 10:42:51 +02:00
Peter Taoussanis
e68c2d56fe v3.5.0 (2025-04-15) 2025-04-15 08:58:10 +02:00
Peter Taoussanis
bfba59483a [new] Add string array type to default thaw-serializable-allowlist 2025-04-14 23:03:17 +02:00
Peter Taoussanis
f7bb2824ac [new] Add value tests for non-comparable types 2025-04-14 23:03:17 +02:00
Peter Taoussanis
8d62dc2826 [new] Use Truss exceptions on errors
Ref. https://cljdoc.org/d/com.taoensso/truss/CURRENT/api/taoensso.truss#*ctx*
2025-04-14 23:03:17 +02:00
Peter Taoussanis
da57206b0d [mod] Drop official Clojure v1.9 support
Clojure v1.9  was released December 8,  2017 (~7 years ago)
Clojure v1.10 was released December 17, 2018 (~6 years ago)

Official support continues for v1.10, v1.11, v1.12.
2025-04-14 23:03:17 +02:00
Peter Taoussanis
e0f49ced5a [nop] Bump deps 2025-04-14 23:03:17 +02:00
Peter Taoussanis
8d107650cd [new] [#184] Incl. cause on non-native freeze failures
Before this commit:

  - When freezing an item WITHOUT a native Nippy implementation,
    Nippy may try to use (1) Java Serializable or (2) Clojure's reader.
    If these also fail, an ex-info will be thrown.
    The ex-info does NOT include any info about possible exceptions
    from (1) or (2).

After this commit:

  - The thrown ex-info now includes info about possible exceptions
    from (1) and (2). These can be useful, e.g. when indicating
    an OOM error, etc.
2025-04-14 23:03:17 +02:00
Peter Taoussanis
1026ea0ae7 [doc] Clarify *freeze-fallback* docstring 2025-04-14 23:03:17 +02:00
Peter Taoussanis
c92457025f [nop] Housekeeping 2025-04-14 23:03:17 +02:00
Peter Taoussanis
3cb29f3c2e v3.5.0-RC1 (2024-10-28) 2024-10-28 11:42:59 +01:00
Peter Taoussanis
a9ea13618c [nop] Maintain new type id info 2024-10-28 11:42:59 +01:00
Peter Taoussanis
d415a2bf72 [new] [#178] Add support for native arrays: strings, longs, ints, doubles, floats 2024-10-28 11:42:59 +01:00
Peter Taoussanis
b217db5579 [new] [#175] Mark cache feature as stable 2024-10-28 10:23:31 +01:00
Peter Taoussanis
9022aad018 [doc] Misc doc improvements 2024-10-28 10:14:25 +01:00
Peter Taoussanis
c0d1da1bb4 [nop] Housekeeping 2024-10-28 10:14:25 +01:00
Peter Taoussanis
bb178f66fc [nop] Bump deps 2024-10-28 10:11:34 +01:00
Peter Taoussanis
9b380821cd v3.4.2 (2024-05-26) 2024-05-26 14:24:15 +02:00
Peter Taoussanis
c5209e32ce [nop] Bump deps 2024-05-26 14:24:15 +02:00
Peter Taoussanis
f6240582e1 [#174] Improve extend-freeze docstring 2024-05-03 11:21:54 +02:00
Peter Taoussanis
4cb2a14adf v3.4.1 (2024-05-02) 2024-05-02 14:26:25 +02:00
Peter Taoussanis
dc52356106 [new] Improve data compatibility when updating Nippy versions
When support is added for a new type in Nippy version X, it necessarily means
that data containing that new type and frozen with Nippy version X is unthawable
with Nippy versions < X.

Earlier versions of Nippy will throw an exception on thawing affected data:
  \"Unrecognized type id (<n>). Data frozen with newer Nippy version?\"

This can present a challenge when updating to new versions of Nippy, e.g.:

  - Rolling updates could lead to old and new versions of Nippy temporarily co-existing.
  - Data written with new types could limit your ability to revert a Nippy update.

There's no easy solution to this in GENERAL, but we CAN at least help reduce the
burden related to CHANGES in core data types by introducing changes over 2 phases:

  1. Nippy vX   reads  new (changed) type, writes old type
  2. Nippy vX+1 writes new (changed) type

When relevant, we can then warn users in the CHANGELOG to not leapfrog
(e.g. Nippy vX -> Nippy vX+2) when doing rolling updates.

This commit bootstraps the new compatibility feature by initially targeting core type
compatibility with Nippy v3.2.0 (2022-07-18).

A future Nippy version (e.g. v3.5.0) will then target v3.4.0, with an appropriate
CHANGELOG instruction to update in phases for environments that involve rolling
updates.
2024-05-02 14:26:25 +02:00
Peter Taoussanis
bd4d5205d5 [doc] Add data compatibility warning to CHANGELOG 2024-05-02 14:18:29 +02:00
Peter Taoussanis
229ab94c14 [nop] Housekeeping 2024-05-02 13:58:50 +02:00
Peter Taoussanis
535d4e5ab0 v3.4.0 (2024-04-30) 2024-04-30 11:39:09 +02:00
Peter Taoussanis
51298e9252 [nop] Bump deps 2024-04-30 11:14:11 +02:00
Peter Taoussanis
738023764c [nop] Misc housekeeping 2024-04-30 11:14:11 +02:00
Peter Taoussanis
1b05c9b8f9 v3.4.0-RC3 (2024-04-10) 2024-04-10 12:01:03 +02:00
Peter Taoussanis
82a050b925 [mod] Don't attach empty metadata 2024-04-10 11:29:09 +02:00
Peter Taoussanis
37cf415c02 [new] [#171] Auto strip metadata protocol extensions
Allows serialization of next.jdbc results, etc.
2024-04-10 11:29:09 +02:00
Peter Taoussanis
92c4a83d61 [fix] Broken *final-freeze-fallback* default val 2024-04-10 11:29:09 +02:00
Peter Taoussanis
af928ed6a4 [nop] Refactor deftype freezer 2024-04-10 11:29:09 +02:00
Peter Taoussanis
f749e07eed [nop] Switch nippy.tools to faster enc/binding 2024-04-10 11:29:09 +02:00
Peter Taoussanis
4d96757447 [nop] Bump deps 2024-04-10 11:29:09 +02:00
Peter Taoussanis
03c4cf1784 [nop] Update project template 2024-03-19 15:11:10 +01:00
Peter Taoussanis
ea7d9ae9de v3.4.0-RC2 (2024-02-26) 2024-02-26 11:08:14 +01:00
Peter Taoussanis
cb0b871fe8 [new] Re-enable Snappy compressor
Upstream safety issue has been resolved,
Ref. <https://github.com/airlift/aircompressor/issues/183>.
2024-02-26 11:07:42 +01:00
Peter Taoussanis
7be9b4f789 [nop] Bump deps 2024-02-26 11:07:42 +01:00
Peter Taoussanis
cb5b7cf063 [fix] [#169] Can't auto-identify :zstd compressor when decompressing 2024-02-26 11:07:42 +01:00
Peter Taoussanis
40143e71ee [nop] Misc benchmark housekeeping 2024-02-26 11:07:42 +01:00
Peter Taoussanis
7e84f58ee4 [nop] Update project template 2024-02-25 19:11:46 +01:00
Peter Taoussanis
b4d161db53 v3.4.0-RC1 (2024-02-06) 2024-02-06 16:02:05 +01:00
Peter Taoussanis
578c585bbf [mod] Remove nippy/snappy-compressor
Details:

  - Nippy will continue to support thawing OLD data that was originally compressed with Snappy.
  - But Nippy will no longer support freezing NEW data with Snappy.

Motivation:

  - The current Snappy implementation can cause JVM crashes in some cases [1].

  - The only alternative JVM implementation that seems to be safe [2] uses JNI and
    so would introduce possible incompatibility issues even for folks not using Snappy.

  - Nippy already moved to the superior LZ4 as its default compression scheme in v2.7.0,
    more than 9 years ago.

[1] Ref. <https://github.com/airlift/aircompressor/issues/183>
[2] Ref. <https://github.com/xerial/snappy-java>
2024-02-06 16:01:13 +01:00
Peter Taoussanis
676898495c [wip] Explore Snappy implementations 2024-02-06 14:30:59 +01:00
Peter Taoussanis
7d2800d106 [nop] Updates for latest Encore 2024-02-06 14:30:59 +01:00
Peter Taoussanis
3c27f03bc4 [nop] Bump deps 2024-02-06 14:30:59 +01:00
Peter Taoussanis
dcc6b081f1 [new] [#164] Update benchmarks 2024-02-06 14:30:59 +01:00
Peter Taoussanis
f287df9e9c [nop] thaw-xform housekeeping 2024-02-06 14:30:59 +01:00
Peter Taoussanis
9b27a00a59 [nop] Protocol housekeeping 2024-02-06 14:30:59 +01:00