Commit graph

716 commits

Author SHA1 Message Date
Peter Taoussanis
9db09e16a9 [new] [#163] Track serialized output in tests 2024-02-06 14:30:59 +01:00
Peter Taoussanis
c2770c6e99 [mod] Refactor stress data
BREAKING for the very small minority of folks that use `nippy/stress-data`.

Changes:

1. Make `nippy/stress-data` a function

   It's unnecessarily wasteful to generate and store all this data when it's not
   being used in the common case.

2. Make data deterministic

   The stress data will now generally be stable by default between different versions
   of Nippy, etc. This will help support an upcoming test for stable serialized output.
2024-02-06 14:30:59 +01:00
Peter Taoussanis
ba6477c097 [nop] Refactor type-checking, remove vestigial utils ns 2024-02-06 14:30:59 +01:00
Peter Taoussanis
9c260b03c4 [doc] Add pointer to correct wiki UI 2024-02-06 14:30:59 +01:00
Peter Taoussanis
27b3ed958b [nop] Misc housekeeping 2024-02-06 14:30:59 +01:00
Peter Taoussanis
e2a44abf6f [nop] Update README 2024-02-06 09:28:48 +01:00
Peter Taoussanis
2900a4d758 [nop] [#163] Update CHANGELOG 2024-02-06 09:28:48 +01:00
Peter Taoussanis
265b15c94c [fix] Resolve Babashka build issue 2024-02-06 09:28:48 +01:00
Peter Taoussanis
cba055306a [fix] Resolve Lein profile warning 2024-02-06 09:28:48 +01:00
Peter Taoussanis
0d002f8d06 v3.4.0-beta1 (2023-09-26) 2023-10-11 14:30:54 +02:00
Peter Taoussanis
d566134da8 [nop] Misc housekeeping 2023-10-11 14:23:34 +02:00
Peter Taoussanis
f3ff7ae8a3 [new] Add native MapEntry freezer 2023-10-11 14:23:34 +02:00
Peter Taoussanis
fb6f75e4d7 [new] Smarter, faster, protocol-based freezable? util 2023-10-11 14:23:34 +02:00
Peter Taoussanis
e0cd00345d [nop] Update docs 2023-10-11 14:23:34 +02:00
Peter Taoussanis
99970d5129 [nop] Update benchmark results 2023-10-11 14:23:34 +02:00
Peter Taoussanis
bcf767332e [nop] Move benchmarks ns under tests dir
Prevents benchmark code from being unnecessarily included as dependency
2023-10-11 14:23:34 +02:00
Peter Taoussanis
fef079d81d [new] Add subvec to stress data 2023-10-11 14:23:34 +02:00
Peter Taoussanis
6ad5aebd1a [new] Add :zstd compressor, new compressor backend
Also switch to https://github.com/airlift/aircompressor for faster
and combined implementations of: LZ4, Snappy
2023-10-11 14:23:34 +02:00
Peter Taoussanis
c8f30e171d [wip] aircompressor experiments (pure Java compression lib) 2023-10-11 14:23:34 +02:00
Peter Taoussanis
b28b0ca175 [nop] Remove accidental duplicate test ns 2023-10-11 14:23:34 +02:00
Peter Taoussanis
d99e0f8541 v3.3.0 (2023-10-11) 2023-10-11 14:12:08 +02:00
Peter Taoussanis
54d179f629 v3.3.0-RC2 (2023-09-25) 2023-09-25 11:55:29 +02:00
Peter Taoussanis
01e42d23e6 [new] [#160] Add more info to *freeze-fallback* docstring 2023-09-25 11:50:06 +02:00
Peter Taoussanis
df5a7df91f [nop] Update project template 2023-09-25 11:50:06 +02:00
Peter Taoussanis
e864294321 [nop] Changes for dependency bumps 2023-09-25 11:50:06 +02:00
Peter Taoussanis
7953751eba [nop] Bump deps 2023-09-25 11:50:06 +02:00
Peter Taoussanis
8d76d9c350 [nop] Improve generative tests, etc.
Incl.:

  - Enlarge set of generated data types
  - Use generative tests in more cases
  - Run more test rounds
2023-09-25 11:50:06 +02:00
Peter Taoussanis
d5a836326a [nop] Misc housekeeping 2023-09-25 11:33:32 +02:00
Peter Taoussanis
ed95701c79 [nop] Bring back private write-str-sm
Hadn't actually intended to remove this
2023-08-03 17:14:16 +02:00
Peter Taoussanis
ac24f872a8 [nop] Add missing metadata to new *thaw-xform* var 2023-08-02 14:44:07 +02:00
Peter Taoussanis
40c1dce6bf v3.3.0-RC1 (2023-08-02) 2023-08-02 14:37:18 +02:00
Peter Taoussanis
38d6aab5c1 [nop] Bump deps 2023-08-02 14:23:06 +02:00
Peter Taoussanis
af3957f4db [nop] Trim, update CHANGELOG 2023-08-02 14:23:05 +02:00
Peter Taoussanis
79fbf8f3c5 [nop] Update README template 2023-08-02 13:50:40 +02:00
Peter Taoussanis
1dffa74b8e [nop] Update project template 2023-08-02 13:50:40 +02:00
Peter Taoussanis
8b7186a930 [nop] Update benchmark results 2023-08-02 13:50:40 +02:00
Peter Taoussanis
89f98b440f [new] [#153] PoC: transducer support on thaw
Note: also considered (but ultimately rejected) idea of a separate
`*thaw-mapfn*` opt that operates directly on every `thaw-from-in!`
result.

This (transducer) approach is more flexible, and covers the most
common use cases just fine. Having both seems excessive.
2023-08-02 13:50:40 +02:00
Peter Taoussanis
60bc4e9976 [new] [Storage efficiency] PoC: unsigned counts for small core colls
This change affects small: strings, vectors, sets, and maps so that
they use *unsigned* element counts.

Before: counts in [0, 127] use 1 byte
After:  counts in [0, 255] use 1 byte

I.e. doubles the range of counts that can be stored in 1 byte.

This changes saves:
  - 1 byte per count in [128, 255]

Is this advantage worth the extra complexity? Probably no in isolation,
but this is a reasonable opportunity to lay the groundwork for unsigned
element counts for future types.
2023-08-02 13:50:40 +02:00
Peter Taoussanis
0a9d67084b [new] [Storage efficiency] PoC: separate signed long types
Before:
  Longs in [  -128,   127] use 1 byte
  Longs in [-32768, 32767] use 2 bytes
  etc.

After:
  Longs in [  -255,   255] use 1 byte
  Longs in [-65535, 65535] use 2 bytes
  etc.

I.e. doubles the range of longs that can be stored by 1, 2, and 4 bytes.

This changes saves:
  - 1 byte  per long in [  128,   255], or [  -129,   -255]
  - 2 bytes per long in [32768, 65535], or [-32769, -65535]
  - 4 bytes per long ...

Is this advantage worth the extra complexity? Probably yes, given how
common longs (and colls of longs) are in Clojure.
2023-08-02 13:50:40 +02:00
Peter Taoussanis
fa1cc66bf3 [fix] [#143] Don't freeze meta info for types that don't support with-meta 2023-08-02 13:50:40 +02:00
Peter Taoussanis
aba153e086 [new] [#159] Add native impln for java.sql.Date (@philomates) 2023-08-02 13:43:59 +02:00
Peter Taoussanis
d8b1825ea0 [new] [#158] Add java.lang.ClassCastException to default thaw allow list (@carlosgeos) 2023-08-02 13:43:59 +02:00
Peter Taoussanis
8778fa49cc [new] Include :bindings in ex-data of thaw failures 2023-08-02 13:43:59 +02:00
Peter Taoussanis
8e363dbcf9 [#154] Revert "[mod] [DEPRECATED] Remove ability to freeze new data using experimental cache feature"
This reverts commit f1af0cae674f7dea29d460c5b630a58c59c7dcab.

Motivation for revert:

  At least 1 user has reported depending on the current `cache`
  feature, and implementing it manually (i.e. outside of Nippy) can
  be non-trivial.

  Rather than risk breaking folks, I'll take some more time to
  consider alternatives. There's no urgency on this.
2023-08-02 13:43:59 +02:00
Peter Taoussanis
648d5c0232 [mod] [DEPRECATED] Remove ability to freeze new data using experimental cache feature
This commit is BREAKING for those still actively using `nippy/cache`.

Data previously frozen using `nippy/cache` can still be thawed, though
support for thawing may also be removed in a future Nippy version.

Motivation for removal:

  This cache feature (marked as experimental) was always a bit dubious.
  The use cases were very limited, and the complexity quite significant.

  I don't believe that the feature has ever had much (any?) public
  adoption, so I'm removing it here.

  PLEASE LET ME KNOW if this removal negatively impacts you.
2023-08-02 13:43:59 +02:00
Peter Taoussanis
0a15278206 [nop] Use UTF8 charset const 2023-08-02 13:43:59 +02:00
Peter Taoussanis
621f1189c7 [nop] Misc housekeeping 2023-08-02 13:43:47 +02:00
Peter Taoussanis
129ce952bc [new] [#151] [#140] Add experimental public-types-spec 2023-08-02 13:29:27 +02:00
Peter Taoussanis
3ac06b6c87 [new] Refactor tools ns, embed dynamic *freeze-opts* in wrappers 2023-08-02 13:28:20 +02:00
Peter Taoussanis
064015e874 [nop] Update tests 2023-07-31 16:42:10 +02:00