Skip to content

lzbench v2.4

Latest

Choose a tag to compare

@inikep inikep released this 27 Sep 17:07
· 53 commits to master since this release
  • added GPUCompact 1.1 (by @UDPSendToFailed)
  • added lbzip2 2.6.5 (thanks to @caius72)
  • added mbrotli 0.5.2 (by @Mnwa)
  • added misa77 0.6.0 (by @welcome-to-the-sunny-side)
  • added OpenZL v0.2.3 (thanks to @fwyzard)
  • added pulsar 2.5.0 (thanks to @ceedot-rock)
  • updated aceapex to 1.0.1 (thanks to @yasha1971-coder)
  • updated bzip3 to 1.5.4
  • updated libdeflate to v1.26
  • updated lzav to 5.17 (thanks to @avaneev)
  • updated lzham to upstream master as of 2020-09-15 (public-domain licence)
  • updated lzma to 26.03
  • updated memlz to 0.5 beta (thanks to @rrrlasse); fixes unaligned accesses, re-enabled on 32-bit ARM
  • updated nvcomp to support CUDA 13 and cccl 3 (thanks to @fwyzard)
  • updated ppmd8 to 26.03
  • updated slz to 1.3.1
  • updated snappy to 1.3.1; fixes a uint32_t overflow on malformed input, faster on RISC-V
  • updated tamp to 2.3.0
  • updated xz to 5.8.4; fixes an invalid memory access in liblzma decoders after a failed allocation
  • updated zxc to 0.14.1 (thanks to @hellobertrand)
  • improvement: autodetect whether linking with -ldl is required (thanks to @fwyzard)
  • improvement: added a CUDA build job (nvcc 13.2, Ubuntu 24.04) to the Azure Pipelines CI
  • improvement: the Rust codecs (density, mbrotli, pulsar) are built into a single library from
    misc/rust-codecs, so a BUILD_STATIC=1 binary can link more than one of them
  • improvement: the crates.io dependencies of the Rust codecs are vendored in
    misc/rust-codecs/vendor, so they build without network access
  • improvement: "make" no longer reruns cargo and recompiles bench/lzbench.o every time;
    the Rust library is rebuilt only when its sources or the set of Rust codecs change
  • improvement: tornado is now benchmarked on RISC-V hardware whose misaligned scalar access
    is fast (detected with the hwprobe syscall), instead of being disabled outright
    (thanks to @zqb-all)
  • improvement: the Makefile now generates header dependencies (-MMD -MP), so editing a header
    or a .cpp that another .cpp #includes (aceapex, lzo, ucl, tamp, 7-zip) rebuilds the
    affected objects instead of relinking stale ones
  • improvement: CI now runs every codec on incompressible and tiny inputs, and has a native
    static build job that links the Rust (density, mbrotli, pulsar) and Zig (skim)
    codecs
  • improvement: RUST_TARGET_CPU sets the CPU the Rust codecs are compiled for (default: native);
    the release binaries use x86-64, as a native build contains e.g. AVX-512 code and
    dies with SIGILL on CPUs without it
  • fix: codecs whose init() fails are now skipped instead of being benchmarked with a
    NULL work_mem, which used to SEGFAULT (e.g. "lzbench -eCUDA" without a GPU)
  • fix: libdeflate leaked a decompressor on every decompression call (thanks to @wu-zhao-min)
  • fix: aceapex corrupted inputs smaller than 768 bytes (thanks to @yasha1971-coder)
  • fix: memory and file handle leaks when an input file cannot be read, or when a memory
    allocation fails (thanks to @wu-zhao-min)
  • fix: density was enabled with Cargo 1.82-1.84, which cannot build its edition 2024 crate,
    so the build failed; it is now skipped below 1.85
  • fix: aceapex double-free on empty compression streams (thanks to @zqb-all)
  • fix: changing the set of codecs (e.g. DONT_BUILD_MBROTLI=1) left stale bench objects
    that failed to link; they are now rebuilt