|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -All notable changes to this project are documented here. Format loosely follows |
4 | | -[Keep a Changelog](https://keepachangelog.com/); versions are released as `v*` |
5 | | -git tags, which trigger publication to Maven Central. |
| 3 | +Notable changes, one line each — follow the link to the commit for detail. |
| 4 | +Versions are `v*` git tags, which trigger publication to Maven Central. |
6 | 5 |
|
7 | 6 | ## [0.3] |
8 | 7 |
|
9 | | -### Changed |
10 | | -- `zstd-platform` is now an ordinary (empty) jar instead of a `pom` aggregator: |
11 | | - depend on it like any other artifact — drop the `<type>pom</type>` you needed |
12 | | - before. It still transitively pulls the bindings plus all six native libraries. |
13 | | - |
14 | | -### Security |
15 | | -- Native loading is bundled-only. Removed the `-Dzstd.lib.path` override — |
16 | | - loading a caller-supplied native library is arbitrary native code execution in |
17 | | - the JVM, so the loader now trusts only the artifact bundled on the classpath. |
18 | | - The bundled library is extracted into a private, owner-only temp directory |
19 | | - (closing a swap/symlink window in the shared temp root). To run a self-built |
20 | | - `libzstd`, rebuild it into the native resource jar (see `docs/how-to.md`). |
21 | | - |
22 | | -### Fixed |
23 | | -- `ZstdSkippableContent` now compares by content: `equals` / `hashCode` / |
24 | | - `toString` consider the payload bytes instead of array identity. |
| 8 | +- [`zstd-platform` is now an empty convenience jar (not a `pom`)][9] |
| 9 | +- [Bundled-only native loader; fix Sonar vulnerability + bug][8] |
| 10 | +- [`ByteBuffer` interop + pledged-size zero-copy decode][6] |
25 | 11 |
|
26 | 12 | ## [0.2] |
27 | 13 |
|
28 | | -### Added |
29 | | -- `zstd-platform` aggregator artifact: one dependency pulls the bindings plus |
30 | | - every platform's native library, so a build runs on any OS/arch without |
31 | | - choosing a classifier. |
32 | | -- `MemorySegment` constructors on `ZstdCompressDict` / `ZstdDecompressDict` to |
33 | | - digest a dictionary straight from off-heap memory (e.g. an mmap slice) with no |
34 | | - heap `byte[]` copy. |
| 14 | +- [`zstd-platform` aggregator; off-heap `MemorySegment` dictionary constructors][v0.2] |
35 | 15 |
|
36 | 16 | ## [0.1] |
37 | 17 |
|
38 | | -First release. Java 25 Foreign Function & Memory (FFM) bindings for |
39 | | -[Zstandard](https://github.com/facebook/zstd) 1.5.7, built hermetically from |
40 | | -vendored source with `zig cc` (no JNI, no prebuilt binaries). 68 of the public |
41 | | -zstd symbols are bound; see `docs/supported.md`. |
42 | | - |
43 | | -### Added |
44 | | -- One-shot compression/decompression over `byte[]` and zero-copy `MemorySegment` |
45 | | - (`Zstd`, `ZstdCompressCtx`, `ZstdDecompressCtx`). |
46 | | -- Dictionaries: training (`ZDICT_trainFromBuffer`, COVER / fast-COVER optimisers, |
47 | | - `finalizeDictionary`), digested `ZstdCompressDict` / `ZstdDecompressDict`, |
48 | | - dictionary ids and header size. |
49 | | -- Streaming: `ZstdOutputStream` / `ZstdInputStream` (java.io) and a zero-copy |
50 | | - `MemorySegment` driver (`ZstdCompressStream` / `ZstdDecompressStream`), with |
51 | | - dictionaries, `pledgedSrcSize`, and live `progress()`. |
52 | | -- All advanced parameters (`ZstdCompressParameter` / `ZstdDecompressParameter`) |
53 | | - with bounds queries; checksum, long-distance matching, window log, etc. |
54 | | -- Frame inspection (`ZstdFrame`): header, content/compressed size, dictionary id, |
55 | | - skippable frames. |
56 | | -- Typed errors (`ZstdException.code()` / `ZstdErrorCode`) and memory accounting |
57 | | - (`sizeOf()`, `Zstd.estimate*Size`). |
58 | | -- Native artifacts for macOS, Linux and Windows on x86_64 and aarch64, |
59 | | - cross-compiled from a single host with `zig cc`. |
60 | | -- Format-compatibility tests against the reference zstd-jni binding. |
| 18 | +- [First release: JDK 25 FFM bindings for Zstandard 1.5.7, built with `zig cc`][v0.1] |
61 | 19 |
|
62 | | -[0.3]: https://github.com/dfa1/zstd-java/releases/tag/v0.3 |
63 | | -[0.2]: https://github.com/dfa1/zstd-java/releases/tag/v0.2 |
64 | | -[0.1]: https://github.com/dfa1/zstd-java/releases/tag/v0.1 |
| 20 | +[9]: https://github.com/dfa1/zstd-java/commit/ba5593a |
| 21 | +[8]: https://github.com/dfa1/zstd-java/commit/8d0ea6a |
| 22 | +[6]: https://github.com/dfa1/zstd-java/commit/8bfe272 |
| 23 | +[v0.2]: https://github.com/dfa1/zstd-java/releases/tag/v0.2 |
| 24 | +[v0.1]: https://github.com/dfa1/zstd-java/releases/tag/v0.1 |
0 commit comments