v1.4.0 — skip re-deflating already-compressed content, mmap fixes, OOM guard
Highlights
- Magic-byte already-compressed detection — entries are recognized by file signature (jars/zips, gzip, bzip2, xz, 7-zip, zstd, rar, lz4, png, jpeg, gif, webp, mp4/mov, webm/mkv, ogg, woff/woff2) and STORED immediately instead of attempting DEFLATE. Geometric-mean speedup across nine real production Zip tasks jumps from ~5.4× (1.3.0) to ~26.5×.
- New
skipAlreadyCompressedtask property (defaulttrue) — the speed above trades real archive size for it (6–17% larger across the in-build benchmark suite). SetskipAlreadyCompressed = falseto always attempt DEFLATE instead, for 1.3.x-like size when that trade isn't worth it for a given archive. - Fixed a Windows-only mmap file-lock bug — an unreleased
MappedByteBufferon a large entry's source file kept it locked against deletion/rewrite until GC, which could break a later task reusing the same file in the same Gradle daemon. - OOM guard for small Gradle daemon heaps — the mmap-path buffer budget now scales down with heap size instead of a fixed 128 MiB ceiling, and a one-time warning fires when the daemon's max heap is under 2048 MiB.
Benchmarks
Full refresh across all 9 in-build projects and all 11 fixed-corpus projects — see docs/BENCHMARKS.md.
Published to the Gradle Plugin Portal.