Skip to content

Releases: intel/qat-java

Qat-Java 2.5.0

Choose a tag to compare

@mulugetam mulugetam released this 17 Jul 07:07
2a1be33

This release redesigns the JNI layer for lower per-call overhead, adds bulk compression APIs, and fixes several correctness issues, particularly around ZSTD and hardware-mode decompression of small frames.

Performance

  • Redesigned JNI interface (#25) following OpenJDK's libzip conventions: packed long results instead of per-call field callbacks, a thread-local staging buffer to avoid direct ByteBuffer allocations, reachabilityFence() guards, and consolidated JNI entry points.
  • New compressFull/decompressFull bulk APIs that process sub-blocks in a single JNI call instead of one call per block.

Bug Fixes

  • Fixed intermittent BufferOverflowException when decompressing multi-frame streams; also fixes HARDWARE-mode round-trips of buffers smaller than 1024 bytes.
  • ZSTD: fixed ByteBuffer position handling and compressFull/decompressFull return values.
  • ZSTD: compression level is now validated in all constructors and capped at 12 (new MAX_COMPRESSION_LEVEL_ZSTD).
  • ZSTD zippers built without an explicit level now default to 3 instead of 6. ⚠️ Behavior change.
  • QatDecompressorInputStream.skip(n) no longer overflows on large n and returns 0 at end of stream instead of -1.
  • decompress(byte[], byte[]) throws IllegalArgumentException for null arrays instead of NullPointerException.
  • compressFull's sizes array is validated before reaching native code.
  • bytesRead/bytesWritten are reset on all failure paths as documented.

API Changes

  • Added QatZipper.compressFull/decompressFull and MAX_COMPRESSION_LEVEL_ZSTD.
  • Removed Builder.retryCount(int) and DEFAULT_RETRY_COUNT. ⚠️ Breaking change.
  • The public zstdCompressCtx/zstdDecompressCtx fields are no longer exposed.

Documentation

  • Extensive Javadoc corrections to match actual behavior (ByteBuffer error semantics, stream contracts, buffer-size descriptions).

Build & Tests

  • Fixed Spotless compatibility across JDK versions; the library still builds on Java 11+.
  • Updated Maven plugin and test dependency versions; fixed a version issue in the JMH benchmark.
  • Added regression tests for all fixes.

Full Changelog: v2.4.0...v2.5.0

Qat-Java 2.4.0

Choose a tag to compare

@mulugetam mulugetam released this 26 Feb 20:31
025d156

Qat-Java 2.4.0 release focuses on performance optimizations, enhanced reliability, and improved observability.

  • Optimized skip implementation in QatDecompressorStream to improve decompression performance and reduce unnecessary overhead.
  • Enhanced logging framework with eight distinct log levels for better debugging and operational visibility.
  • Improved exception handling in JNI code to increase stability and provide clearer error reporting.
  • Separate default compression levels for DEFLATE and ZSTD to ensure more appropriate algorithm-specific tuning.
  • Expanded and refined JMH benchmarks for more accurate and comprehensive performance measurement.
  • Bug fixes to improve overall robustness and reliability.

Qat-Java 2.2.1

Choose a tag to compare

@mulugetam mulugetam released this 05 Jun 15:23

This version does not require the modifyThread permission when operating under a Java SecurityManager. Supports DEFLATE and LZ4.

Qat-Java 2.3.2

Choose a tag to compare

@mulugetam mulugetam released this 10 May 08:57

Enhances QzSession reuse and eliminates potential data races in concurrent use.

Qat-Java 1.2.0

Choose a tag to compare

@mulugetam mulugetam released this 17 Jun 16:30

This version uses QATZip 1.2.0 and does not require a modifyThread permission when running under a Java Security Manager.

Qat-Java 2.3.1

Choose a tag to compare

@mulugetam mulugetam released this 01 May 22:08

This version eliminates the dependency on GLIBC_2.34, allowing qat-java to run on older systems.

Qat-Java 2.3.0

Choose a tag to compare

@mulugetam mulugetam released this 21 Apr 15:55

This version enhances the native library loading mechanism and addresses class loading issues that may arise during unit test execution or at runtime.

Qat-Java 2.2.0

Choose a tag to compare

@mulugetam mulugetam released this 17 Apr 19:43

This version enables the use of thread-local cached QAT sessions, removing the reliance on Cleaner or PhantomReference for resource management.

Qat-Java 2.1.0

Choose a tag to compare

@mulugetam mulugetam released this 29 Mar 21:29

This version brings a couple of key changes compared to version 2.0.0:

  1. It now uses Java's PhantomReference and ReferenceQueue instead of Cleaner to handle QAT session cleanup.
  2. It removes the need for an external dependency on QAT-ZSTD.

It also includes improvements to the JMH benchmarks.

Qat-Java 2.0.0

Choose a tag to compare

@mulugetam mulugetam released this 04 Mar 19:32

This release includes support for QAT-accelerated Zstandard compression.