2014-08-15 09:17:09 +00:00
> This project uses [Break Versioning](https://github.com/ptaoussanis/encore/blob/master/BREAK-VERSIONING.md) as of **Aug 16, 2014**.
2014-07-07 05:47:38 +00:00
## v2.7.0-SNAPSHOT / Unreleased
### Changes
* `extend-thaw` now prints a warning when replacing a pre-existing type id.
2014-04-05 11:14:24 +00:00
## v2.7.0-alpha1 / 2014 Jul 6
> **Major release** with significant performance improvements, a new default compression type ([LZ4](http://blog.jpountz.net/post/28092106032/wow-lz4-is-fast)), and better support for a variety of compression/encryption tools.
>
> The data format is fully **backwards-compatible**, the API is backwards compatible **unless** you are using the `:headerless-meta` thaw option.
### Changes
* A number of internal performance improvements.
* Added [LZ4 ](http://blog.jpountz.net/post/28092106032/wow-lz4-is-fast ) compressor, **replacing Snappy as the default** (often ~10+% faster with similar compression ratios). **Thanks to [mpenet](https://github.com/mpenet) for his work on this** !
* **BREAKING**: the `thaw` `:headerless-meta` option has been dropped. Its purpose was to provide Nippy v1 compatibility, which is now done automatically. To prevent any surprises, `thaw` calls with this option will now **throw an assertion error** .
* **IMPORTANT**: the `thaw` API has been improved (simplified). The default `:encryptor` and `:compressor` values are now both `:auto` , which'll choose intelligently based on data now included with the Nippy header. Behaviour remains the same for data written without a header: you must specify the correct `:compressor` and `:encryptor` values manually.
* Promoted from Alpha status: `taoensso.nippy.compression` ns, `taoensso.nippy.encryption` ns, `taoensso.nippy.tools` ns, `extend-freeze` , `extend-thaw` .
* All Nippy exceptions are now `ex-info` s.
### NEW
* #50: `extend-freeze` , `extend-thaw` can now take arbitrary keyword type ids (see docstrings for more info).
2014-04-29 15:55:21 +00:00
## v2.6.3 / 2014 Apr 29
* Fix #48: broken freeze/thaw identity for empty lazy seqs (@vgeshel).
2014-04-10 09:33:45 +00:00
## v2.6.2 / 2014 Apr 10
2014-04-29 15:55:21 +00:00
* Fix #46: broken support for Clojure < 1.5.0 (@ kul ).
2014-04-10 09:33:45 +00:00
2014-04-08 09:54:54 +00:00
## v2.6.1 / 2014 Apr 8
2014-04-08 10:07:32 +00:00
**CRITICAL FIX** for v2.6.0 released 9 days ago. **Please upgrade ASAP!**
2014-04-08 09:54:54 +00:00
2014-04-08 10:07:32 +00:00
### Problem
Small strings weren't getting a proper UTF-8 encoding:
`(.getBytes <string>)` was being used here instead of
`(.getBytes <string> "UTF-8")` as is correct and done elsewhere.
This means that small UTF-8 _strings may have been incorrectly stored_
in environments where UTF-8 is not the default JVM character encoding.
Bug was introduced in Nippy v2.6.0, released 9 days ago (2014 Mar 30).
*********************************************************************
Please check for possible errors in Unicode text written using Nippy
v2.6.0 if your JVM uses an alternative character encoding by default
*********************************************************************
Really sorry about this! Thanks to @xkihzew for the bug report.
2014-04-08 09:54:54 +00:00
2014-03-30 12:28:51 +00:00
## v2.6.0 / 2014 Mar 30
2014-01-22 10:02:34 +00:00
2014-03-12 05:19:58 +00:00
> **Major release** with efficiency improvements, reliability improvements, and some new utils.
2014-02-22 17:58:37 +00:00
### New
2014-01-22 10:02:34 +00:00
* Low-level fns added: `freeze-to-out!` , `thaw-from-in!` for operating directly on DataOutputs/DataInputs.
2014-01-23 05:40:13 +00:00
* Data size optimizations for some common small data types (small strings/keywords, small integers).
2014-01-22 10:02:34 +00:00
* New test suite added to ensure a 1-to-1 value->binary representation mapping for all core data types. This will be a guarantee kept going forward.
2014-01-23 05:40:13 +00:00
* New `:skip-header?` `freeze` option to freeze data without standard Nippy headers (can be useful in very performance sensitive environments).
2014-01-22 10:02:34 +00:00
* New benchmarks added, notably a Fressian comparison.
2014-02-16 11:54:08 +00:00
* Added experimental `freezable?` util fn to main ns.
* Added some property-based [simple-check ](https://github.com/reiddraper/simple-check ) roundtrip tests.
2014-03-12 05:19:58 +00:00
* Public utils now available for custom type extension: `write-bytes` , `write-biginteger` , `write-utf8` , `write-compact-long` , and respective readers.
2014-02-16 11:54:08 +00:00
2014-01-22 10:02:34 +00:00
### Changes
2014-02-22 17:58:37 +00:00
2014-01-22 10:02:34 +00:00
* **BREAKING**: the experimental `Compressable-LZMA2` type has changed (less overhead).
* **DEPRECATED**: `freeze-to-stream!` , `thaw-from-stream!` are deprecated in favor of the more general `freeze-to-out!` , `thaw-from-in!` .
* **DEPRECATED**: `:legacy-mode` options. This was being used mainly for headerless freezing, so a new headerless mode is taking its place.
2014-02-16 11:54:08 +00:00
* Now distinguish between `BigInteger` and `BigInt` on thawing (previously both thawed to `BigInt` s). (mlacorte).
2014-02-23 18:42:25 +00:00
* Moved most utils to external `encore` dependency.
2014-02-16 11:54:08 +00:00
2014-01-22 10:02:34 +00:00
2014-02-22 17:58:37 +00:00
## v2.5.2 / 2013 Dec 7
2014-01-22 10:02:34 +00:00
2014-02-22 17:58:37 +00:00
### New
2014-01-22 10:02:34 +00:00
2013-12-06 11:40:13 +00:00
* Test Serializable objects at freeze time for better reliability.
2014-02-22 17:58:37 +00:00
* Thaw error messages now include failing type-id.
### Changes
2013-12-06 11:40:13 +00:00
* Don't cache `serializable?` /`readable?` for types with gensym-style names (e.g. as used for anonymous fns, etc.).
* Failed serialized/reader thaws will try return what they can (e.g. unreadable string) instead of just throwing.
2013-12-03 07:36:33 +00:00
2014-02-22 17:58:37 +00:00
## v2.5.1 / 2013 Dec 3
### New
2013-12-03 07:36:33 +00:00
* Added experimental `inspect-ba` fn for examining data possibly frozen by Nippy.
2014-02-22 17:58:37 +00:00
### Changes
2013-12-03 08:50:24 +00:00
* Now throw exception at freeze (rather than thaw) time when trying to serialize an unreadable object using the Clojure reader.
2013-12-03 07:36:33 +00:00
2013-11-18 07:09:03 +00:00
## v2.4.1 → v2.5.0
2013-10-24 07:01:35 +00:00
* Refactored standard Freezable protocol implementations to de-emphasise interfaces as a matter of hygiene, Ref. http://goo.gl/IFXzvh.
2013-10-24 11:53:02 +00:00
* BETA STATUS: Added an additional (pre-Reader) Serializable fallback. This should greatly extend the number of out-the-box-serializable types.
2013-10-31 06:33:21 +00:00
* ISeq is now used as a fallback for non-concrete seq types, giving better type matching pre/post freeze for things like LazySeqs, etc.
2013-11-06 06:12:41 +00:00
* Experimental: add `Compressable-LZMA2` type & (replaceable) de/serializer.
2013-10-24 07:01:35 +00:00
2013-10-19 11:18:31 +00:00
## v2.3.0 → v2.4.1
2013-10-19 08:37:10 +00:00
* Added (alpha) LZMA2 (high-ratio) compressor.
* Bump tools.reader dependency to 0.7.9.
2013-10-17 10:51:06 +00:00
## v2.2.0 → v2.3.0
* Huge (~30%) improvement to freeze time courtesy of Zach Tellman (ztellman).
2013-10-03 14:21:59 +00:00
## v2.1.0 → v2.2.0
2013-08-07 10:59:52 +00:00
* Dropped `:read-eval?` , `:print-dup?` options.
Thanks to James Reeves (weavejester) for these changes!:
* Switched to `tools.reader.edn` for safer reader fallback.
* Added fast binary serialization for Date and UUID types.
* Added fast binary serialization for record types.
2013-07-29 08:59:24 +00:00
## v2.0.0 → v2.1.0
* Exposed low-level fns: `freeze-to-stream!` , `thaw-from-stream!` .
* Added `extend-freeze` and `extend-thaw` for extending to custom types:
2013-08-05 06:36:52 +00:00
2013-07-29 08:59:24 +00:00
* Added support for easily extending Nippy de/serialization to custom types:
2013-08-05 06:36:52 +00:00
```clojure
(defrecord MyType [data])
(nippy/extend-freeze MyType 1 [x steam] (.writeUTF stream (:data x)))
(nippy/extend-thaw 1 [stream] (->MyType (.readUTF stream)))
(nippy/thaw (nippy/freeze (->MyType "Joe"))) => #taoensso .nippy.MyType{:data "Joe"}
```
2013-07-29 08:59:24 +00:00
2013-07-22 16:44:37 +00:00
## v1.2.1 → v2.0.0
2013-07-23 16:21:48 +00:00
* **MIGRATION NOTE**: Please be sure to use `lein clean` to clear old (v1) build artifacts!
2013-06-27 12:01:01 +00:00
* Refactored for huge performance improvements (~40% roundtrip time).
* New header format for better error messages.
* New `taoensso.nippy.tools` ns for easier integration with 3rd-party tools.
* **DEPRECATED**: `freeze-to-bytes` -> `freeze` , `thaw-from-bytes` -> `thaw` .
See the new fn docstrings for updated opts, etc.
* Added pluggable compression support:
```clojure
(freeze "Hello") ; defaults to:
(freeze "Hello" {:compressor taoensso.nippy.compression/snappy-compressor})
;; The :compressor value above can be replaced with nil (no compressor) or
;; an alternative Compressor implementing the appropriate protocol
```
* Added pluggable crypto support:
```clojure
(freeze "Hello") ; defaults to:
(freeze "Hello" {:encryptor taoensso.nippy.encryption/aes128-encryptor}
;; The :encryptor value above can be replaced with nil (no encryptor) or
;; an alternative Encryptor implementing the appropriate protocol
```
2014-02-23 18:42:25 +00:00
See the [README ](https://github.com/ptaoussanis/nippy#encryption-currently-in-alpha ) for an example using encryption.