[new] Re-enable Snappy compressor

Upstream safety issue has been resolved,
Ref. <https://github.com/airlift/aircompressor/issues/183>.
This commit is contained in:
Peter Taoussanis 2024-02-25 19:13:30 +01:00
parent 7be9b4f789
commit cb0b871fe8
3 changed files with 20 additions and 12 deletions

View file

@ -337,7 +337,7 @@
compression/lz4-compressor compression/lz4-compressor
compression/lz4hc-compressor compression/lz4hc-compressor
#_compression/lzo-compressor #_compression/lzo-compressor
#_compression/snappy-compressor ; Can be unsafe compression/snappy-compressor
compression/lzma2-compressor compression/lzma2-compressor
encryption/encrypt encryption/encrypt

View file

@ -201,13 +201,16 @@
See `taoensso.nippy-benchmarks` for detailed comparative benchmarks." See `taoensso.nippy-benchmarks` for detailed comparative benchmarks."
(LZMA2Compressor. 0)) (LZMA2Compressor. 0))
(enc/def* snappy-compressor
"Default `Snappy` compressor:
- Compression ratio: `C` (0.58 on reference benchmark).
- Compression speed: `A+` (206 msecs on reference benchmark).
- Decompression speed: `B` (134 msecs on reference benchmark).
Good general-purpose compressor, favours speed.
See `taoensso.nippy-benchmarks` for detailed comparative benchmarks."
(SnappyCompressor. false))
(enc/def* ^:no-doc lz4hc-compressor (enc/def* ^:no-doc lz4hc-compressor
"Different LZ4 modes no longer supported, prefer `lz4-compressor`." "Different LZ4 modes no longer supported, prefer `lz4-compressor`."
{:deprecated "v3.4.0-RC1 (2024-02-06)"} {:deprecated "v3.4.0-RC1 (2024-02-06)"}
(LZ4Compressor.)) (LZ4Compressor.))
(enc/def* ^:no-doc snappy-compressor
"Snappy compressor no longer recommended, prefer `lz4-compressor`.
Decompression can be unsafe against untrusted data!"
{:deprecated "v3.4.0-RC1 (2024-02-06)"}
(SnappyCompressor. false))

View file

@ -423,16 +423,21 @@
;;;; Compressors ;;;; Compressors
(deftest _compressors (deftest _compressors
(println "\nTesting decompression of random data...")
(doseq [c [compr/zstd-compressor (doseq [c [compr/zstd-compressor
compr/lz4-compressor compr/lz4-compressor
compr/lzo-compressor compr/lzo-compressor
#_compr/snappy-compressor ; Ref. <https://github.com/airlift/aircompressor/issues/183> compr/snappy-compressor
compr/lzma2-compressor]] compr/lzma2-compressor]]
(dotimes [_ 2e4] (print (str " With " (name (compr/header-id c)))) (flush)
(is (dotimes [_ 5] ; Slow, a few k laps should be sufficient for CI
(nil? (enc/catching (compr/decompress c (crypto/rand-bytes 1024)))) (print ".") (flush)
"Decompression never crashes JVM, even against invalid data")))) (dotimes [_ 1000]
(is
(nil? (enc/catching (compr/decompress c (crypto/rand-bytes 1024))))
"Decompression never crashes JVM, even against invalid data")))
(println)))
;;;; Benchmarks ;;;; Benchmarks