Skip to content

Commit 354261a

Browse files
dfa1claude
andauthored
refactor!: spell out abbreviated type names (#49)
Rename public types to full words, matching the Zstd<Compress|Decompress> <Stream|Parameter> family and zstd prose ("compression context", "dictionary"): - ZstdCompressCtx -> ZstdCompressContext - ZstdDecompressCtx -> ZstdDecompressContext - ZstdCompressDict -> ZstdCompressDictionary - ZstdDecompressDict -> ZstdDecompressDictionary Updates all code, tests, docs, README, benchmarks, smoke. luben (zstd-jni) ZstdCompressCtx/Dict references in interop tests/benchmarks left untouched. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent b05ee34 commit 354261a

33 files changed

Lines changed: 311 additions & 302 deletions

.github/smoke/Smoke.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
// can pin the released version and the per-arch native jar from the matrix.
66

77
import io.github.dfa1.zstd.Zstd;
8-
import io.github.dfa1.zstd.ZstdCompressCtx;
9-
import io.github.dfa1.zstd.ZstdDecompressCtx;
8+
import io.github.dfa1.zstd.ZstdCompressContext;
9+
import io.github.dfa1.zstd.ZstdDecompressContext;
1010
import io.github.dfa1.zstd.ZstdDictionary;
1111

1212
import java.util.ArrayList;
@@ -38,8 +38,8 @@ public static void main(String[] args) {
3838
samples.add(("{\"id\":" + i + ",\"user\":\"user_" + (i % 100) + "\",\"event\":\"click\"}").getBytes());
3939
}
4040
ZstdDictionary dict = ZstdDictionary.train(samples, 8 * 1024);
41-
try (ZstdCompressCtx cctx = new ZstdCompressCtx();
42-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
41+
try (ZstdCompressContext cctx = new ZstdCompressContext();
42+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
4343
byte[] message = samples.get(7);
4444
byte[] dictCompressed = cctx.compress(message, dict);
4545
byte[] dictRestored = dctx.decompress(dictCompressed, message.length, dict);

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ All notable changes to this project are documented here. Format loosely follows
44
[Keep a Changelog](https://keepachangelog.com/); versions are released as `v*`
55
git tags, which trigger publication to Maven Central.
66

7+
## [Unreleased]
8+
9+
### Changed
10+
- **Breaking:** renamed public types to spell out abbreviations, matching the
11+
`Zstd<Compress|Decompress><Stream|Parameter>` family and zstd's own prose
12+
("compression context", "dictionary"): `ZstdCompressCtx``ZstdCompressContext`,
13+
`ZstdDecompressCtx``ZstdDecompressContext`, `ZstdCompressDict`
14+
`ZstdCompressDictionary`, `ZstdDecompressDict``ZstdDecompressDictionary`.
15+
716
## [0.6] - 2026-06-27
817

918
### Added

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ List<byte[]> samples = ...; // representative records
4444
ZstdDictionary dict = ZstdDictionary.train(samples, 8 * 1024);
4545

4646
byte[] message = ...;
47-
try (ZstdCompressCtx cctx = new ZstdCompressCtx();
48-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
47+
try (ZstdCompressContext cctx = new ZstdCompressContext();
48+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
4949
byte[] frame = cctx.compress(message, dict);
5050
byte[] back = dctx.decompress(frame, message.length, dict);
5151
}
@@ -58,8 +58,8 @@ import io.github.dfa1.zstd.*;
5858
import java.lang.foreign.*;
5959

6060
try (Arena arena = Arena.ofConfined();
61-
ZstdCompressCtx cctx = new ZstdCompressCtx();
62-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
61+
ZstdCompressContext cctx = new ZstdCompressContext();
62+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
6363

6464
MemorySegment src = ...; // e.g. an mmap'd file slice
6565
MemorySegment frame = cctx.compress(arena, src); // off-heap → off-heap

adr/0010-native-context-pool.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66

77
## Context
88

9-
`ZstdCompressCtx`/`ZstdDecompressCtx` wrap native CCtx/DCtx — expensive to
9+
`ZstdCompressContext`/`ZstdDecompressContext` wrap native CCtx/DCtx — expensive to
1010
create (off-heap malloc + init) and **not thread-safe**. The library targets
1111
JDK 25, where virtual threads are the default concurrency model: many, cheap,
1212
short-lived. The question is how to reuse contexts across them.
1313

14-
`ThreadLocal<ZstdCompressCtx>` is the wrong answer under virtual threads: one
14+
`ThreadLocal<ZstdCompressContext>` is the wrong answer under virtual threads: one
1515
context per vthread means millions of native contexts (native-memory
1616
explosion), and short vthread lifetimes mean the cached context is never
1717
reused. Java's own guidance: **pool the scarce resource, not the thread.**

benchmark/src/main/java/io/github/dfa1/zstd/bench/CompressBenchmark.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import io.airlift.compress.v3.zstd.ZstdJavaCompressor;
66
import io.github.dfa1.zstd.Zstd;
7-
import io.github.dfa1.zstd.ZstdCompressCtx;
7+
import io.github.dfa1.zstd.ZstdCompressContext;
88
import java.lang.foreign.Arena;
99
import java.lang.foreign.MemorySegment;
1010
import java.util.concurrent.TimeUnit;
@@ -43,7 +43,7 @@ public class CompressBenchmark {
4343

4444
private byte[] src;
4545

46-
private ZstdCompressCtx ffmCtx;
46+
private ZstdCompressContext ffmCtx;
4747
private byte[] ffmDst;
4848

4949
private Arena arena;
@@ -58,7 +58,7 @@ public void setup() {
5858
src = BenchData.generate(size);
5959
int bound = (int) Zstd.compressBound(size);
6060

61-
ffmCtx = new ZstdCompressCtx().level(level);
61+
ffmCtx = new ZstdCompressContext().level(level);
6262
ffmDst = new byte[bound];
6363

6464
arena = Arena.ofConfined();

benchmark/src/main/java/io/github/dfa1/zstd/bench/DecompressBenchmark.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import io.airlift.compress.v3.zstd.ZstdJavaDecompressor;
66
import io.github.dfa1.zstd.Zstd;
7-
import io.github.dfa1.zstd.ZstdDecompressCtx;
7+
import io.github.dfa1.zstd.ZstdDecompressContext;
88
import java.lang.foreign.Arena;
99
import java.lang.foreign.MemorySegment;
1010
import java.util.concurrent.TimeUnit;
@@ -41,7 +41,7 @@ public class DecompressBenchmark {
4141
private int originalSize;
4242
private byte[] frame;
4343

44-
private ZstdDecompressCtx ffmCtx;
44+
private ZstdDecompressContext ffmCtx;
4545

4646
private Arena arena;
4747
private MemorySegment frameSeg;
@@ -55,7 +55,7 @@ public void setup() {
5555
originalSize = size;
5656
frame = Zstd.compress(BenchData.generate(size));
5757

58-
ffmCtx = new ZstdDecompressCtx();
58+
ffmCtx = new ZstdDecompressContext();
5959

6060
arena = Arena.ofConfined();
6161
frameSeg = arena.allocate(frame.length);

benchmark/src/main/java/io/github/dfa1/zstd/bench/GoldenCorpusBenchmark.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import static java.lang.foreign.ValueLayout.JAVA_BYTE;
44

55
import io.github.dfa1.zstd.Zstd;
6-
import io.github.dfa1.zstd.ZstdCompressCtx;
7-
import io.github.dfa1.zstd.ZstdDecompressCtx;
6+
import io.github.dfa1.zstd.ZstdCompressContext;
7+
import io.github.dfa1.zstd.ZstdDecompressContext;
88
import java.io.UncheckedIOException;
99
import java.io.IOException;
1010
import java.lang.foreign.Arena;
@@ -61,8 +61,8 @@ public class GoldenCorpusBenchmark {
6161

6262
private int bound;
6363

64-
private ZstdCompressCtx cctx;
65-
private ZstdDecompressCtx dctx;
64+
private ZstdCompressContext cctx;
65+
private ZstdDecompressContext dctx;
6666
private byte[] compressDst;
6767

6868
private Arena arena;
@@ -88,8 +88,8 @@ public void setup() {
8888
srcSize = src.length;
8989
frame = Zstd.compress(src);
9090

91-
cctx = new ZstdCompressCtx().level(level);
92-
dctx = new ZstdDecompressCtx();
91+
cctx = new ZstdCompressContext().level(level);
92+
dctx = new ZstdDecompressContext();
9393
bound = (int) Zstd.compressBound(srcSize);
9494
compressDst = new byte[bound];
9595

docs/how-to.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ Task-focused recipes. Each assumes you have the library on the classpath (see th
88
Reuse a context to amortise native allocation across many calls:
99

1010
```java
11-
try (ZstdCompressCtx cctx = new ZstdCompressCtx().level(19);
12-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
11+
try (ZstdCompressContext cctx = new ZstdCompressContext().level(19);
12+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
1313
byte[] packed = cctx.compress(message);
1414
byte[] restored = dctx.decompress(packed, message.length);
1515
}
@@ -26,7 +26,7 @@ or to abort a half-written frame and start clean — without freeing and recreat
2626
it. Pick what to clear with `ZstdResetDirective`:
2727

2828
```java
29-
try (ZstdCompressCtx cctx = new ZstdCompressCtx().level(19)) {
29+
try (ZstdCompressContext cctx = new ZstdCompressContext().level(19)) {
3030
byte[] a = cctx.compress(first);
3131

3232
// Cheap: drop any unflushed frame state, keep the level and parameters.
@@ -39,7 +39,7 @@ try (ZstdCompressCtx cctx = new ZstdCompressCtx().level(19)) {
3939
}
4040
```
4141

42-
`ZstdDecompressCtx.reset(...)` works the same way. Reuse alone amortises
42+
`ZstdDecompressContext.reset(...)` works the same way. Reuse alone amortises
4343
allocation; reset lets a long-lived or pooled context return to a known state
4444
without churning native memory.
4545

@@ -51,7 +51,7 @@ matching) set on the context. To combine the two, make the dictionary *sticky*
5151
with `loadDictionary` — then the normal `compress` path honours both:
5252

5353
```java
54-
try (ZstdCompressCtx cctx = new ZstdCompressCtx().level(19).checksum(true)) {
54+
try (ZstdCompressContext cctx = new ZstdCompressContext().level(19).checksum(true)) {
5555
cctx.loadDictionary(dict); // ZstdDictionary, or a native MemorySegment
5656
byte[] frame = cctx.compress(record); // dictionary + checksum, together
5757
}
@@ -62,9 +62,9 @@ by reference — no per-call digesting, no copy. It pairs with `reset` for a
6262
pooled, recycled context:
6363

6464
```java
65-
try (ZstdCompressDict cdict = dict.compressDict(19)) {
65+
try (ZstdCompressDictionary cdict = dict.compressDict(19)) {
6666
// one cctx per pooled worker, all sharing the one digested dictionary
67-
try (ZstdCompressCtx cctx = new ZstdCompressCtx()) {
67+
try (ZstdCompressContext cctx = new ZstdCompressContext()) {
6868
cctx.refDictionary(cdict); // borrowed; cdict must outlive cctx
6969
byte[] a = cctx.compress(first);
7070
cctx.reset(ZstdResetDirective.SESSION_ONLY); // recycle, keep the dictionary
@@ -76,12 +76,12 @@ try (ZstdCompressDict cdict = dict.compressDict(19)) {
7676
`refDictionary` only borrows: the digested `cdict` is *not* tied to the context's
7777
lifetime, so it must be closed separately (hence its own try-with-resources). That
7878
is the price of sharing one digest across many contexts. If you have just **one**
79-
context, don't build a `ZstdCompressDict` at all — `loadDictionary` above digests
79+
context, don't build a `ZstdCompressDictionary` at all — `loadDictionary` above digests
8080
into the context and frees it for you, and a stray, never-closed
81-
`ZstdCompressDict` is a native-memory leak.
81+
`ZstdCompressDictionary` is a native-memory leak.
8282

8383
A loaded or referenced dictionary stays until replaced, cleared with `null`, or
84-
dropped by a parameter `reset`. `ZstdDecompressCtx` mirrors all of this.
84+
dropped by a parameter `reset`. `ZstdDecompressContext` mirrors all of this.
8585

8686
## Compress many small payloads with a dictionary
8787

@@ -92,8 +92,8 @@ representative samples:
9292
```java
9393
ZstdDictionary dict = ZstdDictionary.train(sampleRecords, 16 * 1024);
9494

95-
try (ZstdCompressCtx cctx = new ZstdCompressCtx();
96-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
95+
try (ZstdCompressContext cctx = new ZstdCompressContext();
96+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
9797
byte[] packed = cctx.compress(record, dict);
9898
byte[] restored = dctx.decompress(packed, record.length, dict);
9999
}
@@ -105,10 +105,10 @@ ZstdDictionary reloaded = ZstdDictionary.of(persisted);
105105
On a hot path, digest the dictionary once to skip per-call setup:
106106

107107
```java
108-
try (ZstdCompressDict cdict = dict.compressDict(19);
109-
ZstdDecompressDict ddict = dict.decompressDict();
110-
ZstdCompressCtx cctx = new ZstdCompressCtx();
111-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
108+
try (ZstdCompressDictionary cdict = dict.compressDict(19);
109+
ZstdDecompressDictionary ddict = dict.decompressDict();
110+
ZstdCompressContext cctx = new ZstdCompressContext();
111+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
112112
byte[] packed = cctx.compress(record, cdict);
113113
byte[] restored = dctx.decompress(packed, record.length, ddict);
114114
}
@@ -122,7 +122,7 @@ hands zstd the segment address directly: no copy in, no copy out, no GC churn.
122122

123123
```java
124124
try (Arena arena = Arena.ofConfined();
125-
ZstdDecompressCtx dctx = new ZstdDecompressCtx()) {
125+
ZstdDecompressContext dctx = new ZstdDecompressContext()) {
126126
MemorySegment frame = reader.mmapSlice(); // already native
127127
long n = Zstd.decompressedSize(frame); // read header, no copy
128128
MemorySegment out = arena.allocate(n); // becomes the backing buffer
@@ -138,10 +138,10 @@ The segment-API map:
138138

139139
| Operation | byte[] (convenience) | MemorySegment (boundary zero-copy) |
140140
|------------------------|-------------------------------------------------|----------------------------------------------------|
141-
| compress | `ZstdCompressCtx.compress(byte[])` | `ZstdCompressCtx.compress(dst, src)` |
142-
| compress + dict | `ZstdCompressCtx.compress(byte[], ZstdCompressDict)` | `ZstdCompressCtx.compress(dst, src, ZstdCompressDict)` |
143-
| decompress | `ZstdDecompressCtx.decompress(byte[], int)` | `ZstdDecompressCtx.decompress(dst, src)` |
144-
| decompress + dict | `ZstdDecompressCtx.decompress(byte[], int, ZstdDecompressDict)` | `ZstdDecompressCtx.decompress(dst, src, ZstdDecompressDict)` |
141+
| compress | `ZstdCompressContext.compress(byte[])` | `ZstdCompressContext.compress(dst, src)` |
142+
| compress + dict | `ZstdCompressContext.compress(byte[], ZstdCompressDictionary)` | `ZstdCompressContext.compress(dst, src, ZstdCompressDictionary)` |
143+
| decompress | `ZstdDecompressContext.decompress(byte[], int)` | `ZstdDecompressContext.decompress(dst, src)` |
144+
| decompress + dict | `ZstdDecompressContext.decompress(byte[], int, ZstdDecompressDictionary)` | `ZstdDecompressContext.decompress(dst, src, ZstdDecompressDictionary)` |
145145
| size output (no copy) | frame header via `Zstd.decompress(byte[])` | `Zstd.decompressedSize(MemorySegment)` |
146146

147147
Size `dst` with `Zstd.compressBound(srcSize)` for compression, or
@@ -177,7 +177,7 @@ direct buffer or a `byte[]` first.
177177

178178
```java
179179
try (Arena arena = Arena.ofConfined();
180-
ZstdCompressCtx cctx = new ZstdCompressCtx()) {
180+
ZstdCompressContext cctx = new ZstdCompressContext()) {
181181
ByteBuffer src = channel.map(READ_ONLY, 0, size, arena); // direct, off-heap
182182
MemorySegment in = MemorySegment.ofBuffer(src); // covers [position, limit)
183183
MemorySegment out = cctx.compress(arena, in); // arena-owned frame

docs/reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ native artifact per platform:
1616
| Type | Role |
1717
|---|---|
1818
| `Zstd` | one-shot `compress` / `decompress`, level + version queries, `compressBound`, `decompressedSize` |
19-
| `ZstdCompressCtx` / `ZstdDecompressCtx` | reusable contexts; `byte[]` and `MemorySegment` overloads, dictionary variants |
19+
| `ZstdCompressContext` / `ZstdDecompressContext` | reusable contexts; `byte[]` and `MemorySegment` overloads, dictionary variants |
2020
| `ZstdDictionary` | train (`ZDICT`), load, persist, query dict id |
21-
| `ZstdCompressDict` / `ZstdDecompressDict` | pre-digested dictionaries for hot paths |
21+
| `ZstdCompressDictionary` / `ZstdDecompressDictionary` | pre-digested dictionaries for hot paths |
2222
| `ZstdFrame` | frame inspection: header, sizes, dict id, skippable frames |
2323
| `ZstdException` / `ZstdErrorCode` | typed errors mapped from zstd's sentinels |
2424

docs/supported.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,26 +49,26 @@ rather than the deprecated `ZSTD_getDecompressedSize`.
4949
| `ZSTD_versionNumber`, `ZSTD_versionString` | `Zstd.version` |
5050
| `ZSTD_isError`, `ZSTD_getErrorName` | internal error mapping in `Zstd` |
5151
| `ZSTD_getFrameContentSize` | `Zstd.decompress(byte[])`, `Zstd.decompressedSize` |
52-
| `ZSTD_createCCtx`, `ZSTD_freeCCtx`, `ZSTD_compressCCtx` | `ZstdCompressCtx` |
53-
| `ZSTD_createDCtx`, `ZSTD_freeDCtx`, `ZSTD_decompressDCtx` | `ZstdDecompressCtx` |
54-
| `ZSTD_compress_usingDict` | `ZstdCompressCtx.compress(byte[], ZstdDictionary)` |
55-
| `ZSTD_decompress_usingDict` | `ZstdDecompressCtx.decompress(byte[], int, ZstdDictionary)` |
56-
| `ZSTD_createCDict`, `ZSTD_freeCDict`, `ZSTD_compress_usingCDict` | `ZstdCompressDict` |
57-
| `ZSTD_createDDict`, `ZSTD_freeDDict`, `ZSTD_decompress_usingDDict` | `ZstdDecompressDict` |
52+
| `ZSTD_createCCtx`, `ZSTD_freeCCtx`, `ZSTD_compressCCtx` | `ZstdCompressContext` |
53+
| `ZSTD_createDCtx`, `ZSTD_freeDCtx`, `ZSTD_decompressDCtx` | `ZstdDecompressContext` |
54+
| `ZSTD_compress_usingDict` | `ZstdCompressContext.compress(byte[], ZstdDictionary)` |
55+
| `ZSTD_decompress_usingDict` | `ZstdDecompressContext.decompress(byte[], int, ZstdDictionary)` |
56+
| `ZSTD_createCDict`, `ZSTD_freeCDict`, `ZSTD_compress_usingCDict` | `ZstdCompressDictionary` |
57+
| `ZSTD_createDDict`, `ZSTD_freeDDict`, `ZSTD_decompress_usingDDict` | `ZstdDecompressDictionary` |
5858
| `ZDICT_trainFromBuffer` | `ZstdDictionary.train` |
5959
| `ZDICT_getDictID` | `ZstdDictionary.id` |
6060
| `ZDICT_isError`, `ZDICT_getErrorName` | internal error mapping in `ZstdDictionary` |
6161
| `ZSTD_compressStream2`, `ZSTD_CStreamInSize`, `ZSTD_CStreamOutSize`, `ZSTD_CCtx_setParameter` | `ZstdOutputStream` |
6262
| `ZSTD_decompressStream`, `ZSTD_DStreamInSize`, `ZSTD_DStreamOutSize` | `ZstdInputStream` |
63-
| `ZSTD_compress2`, `ZSTD_CCtx_setParameter` | `ZstdCompressCtx.parameter` / `checksum` / `longDistanceMatching` / `windowLog` (all of `ZstdCompressParameter`) |
64-
| `ZSTD_DCtx_setParameter` | `ZstdDecompressCtx.parameter` / `windowLogMax` (`ZstdDecompressParameter`) |
63+
| `ZSTD_compress2`, `ZSTD_CCtx_setParameter` | `ZstdCompressContext.parameter` / `checksum` / `longDistanceMatching` / `windowLog` (all of `ZstdCompressParameter`) |
64+
| `ZSTD_DCtx_setParameter` | `ZstdDecompressContext.parameter` / `windowLogMax` (`ZstdDecompressParameter`) |
6565
| `ZSTD_CCtx_setPledgedSrcSize` | `ZstdOutputStream.withPledgedSize` |
66-
| `ZSTD_CCtx_reset`, `ZSTD_DCtx_reset` | `ZstdCompressCtx.reset` / `ZstdDecompressCtx.reset` (`ZstdResetDirective`) |
67-
| `ZSTD_getDictID_fromCDict`, `ZSTD_getDictID_fromDDict` | `ZstdCompressDict.id()` / `ZstdDecompressDict.id()` |
66+
| `ZSTD_CCtx_reset`, `ZSTD_DCtx_reset` | `ZstdCompressContext.reset` / `ZstdDecompressContext.reset` (`ZstdResetDirective`) |
67+
| `ZSTD_getDictID_fromCDict`, `ZSTD_getDictID_fromDDict` | `ZstdCompressDictionary.id()` / `ZstdDecompressDictionary.id()` |
6868
| `ZSTD_getErrorString` | `ZstdErrorCode.description()` |
6969
| `ZSTD_cParam_getBounds`, `ZSTD_dParam_getBounds` | `ZstdCompressParameter.bounds()` / `ZstdDecompressParameter.bounds()` (`ZstdBounds`) |
70-
| `ZSTD_CCtx_loadDictionary`, `ZSTD_DCtx_loadDictionary` | `ZstdCompressCtx.loadDictionary` / `ZstdDecompressCtx.loadDictionary`; `ZstdOutputStream` / `ZstdInputStream` dictionary constructors |
71-
| `ZSTD_CCtx_refCDict`, `ZSTD_DCtx_refDDict` | `ZstdCompressCtx.refDictionary` / `ZstdDecompressCtx.refDictionary` |
70+
| `ZSTD_CCtx_loadDictionary`, `ZSTD_DCtx_loadDictionary` | `ZstdCompressContext.loadDictionary` / `ZstdDecompressContext.loadDictionary`; `ZstdOutputStream` / `ZstdInputStream` dictionary constructors |
71+
| `ZSTD_CCtx_refCDict`, `ZSTD_DCtx_refDDict` | `ZstdCompressContext.refDictionary` / `ZstdDecompressContext.refDictionary` |
7272
| `ZSTD_isFrame`, `ZSTD_findFrameCompressedSize`, `ZSTD_decompressBound`, `ZSTD_getDictID_fromFrame`, `ZSTD_getFrameHeader`, `ZSTD_isSkippableFrame`, `ZSTD_writeSkippableFrame`, `ZSTD_readSkippableFrame` | `ZstdFrame` (+ `ZstdFrameHeader`, `ZstdFrameType`, `ZstdSkippableContent`) |
7373
| `ZSTD_getErrorCode` | `ZstdException.code()` (+ `ZstdErrorCode`) |
7474
| `ZSTD_getFrameProgression` | `ZstdCompressStream.progress()` (`ZstdFrameProgression`) |

0 commit comments

Comments
 (0)