Skip to content

Commit e21226f

Browse files
dfa1claude
andcommitted
docs: reconcile supported.md to 68/186 and zstd 1.5.7
The doc had drifted to 55 bound. Bring it current against Bindings.java (verified: doc ✅-set == the 68 actually bound, no false/missing marks): - headline 55 -> 68 (~37%); group counts: ZDICT 8/12, frame inspection 10/13, memory sizing 8/14 - flip newly-bound symbols: cover/fastCover, finalizeDictionary, getDictHeaderSize, getFrameProgression, sizeof_*, estimate*Size - bound->Java rows for progress, cover/fastCover, finalize, sizeOf, estimates - deprecated count 25 -> 27 (flag ZSTD_DCtx_setFormat, ZSTD_generateSequences) - roadmap: frame inspection + better-dictionaries marked done All 68 bindings verified to resolve against the now-pinned zstd 1.5.7; 123 tests green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent aef266a commit e21226f

1 file changed

Lines changed: 30 additions & 25 deletions

File tree

docs/supported.md

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ and semantics follow the [official manual](https://facebook.github.io/zstd/doc/a
55

66
- zstd version: **1.5.7** (vendored `third_party/zstd`, pinned to tag `v1.5.7`)
77
- Public symbols exported by `libzstd`: **185**
8-
- Bound so far: **55** (~30%)
8+
- Bound so far: **68** (~37%)
99

1010
"Bound" means the symbol has a `MethodHandle` in `Bindings` and is reachable
1111
through the public Java API. The rest are reachable from native code but not yet
1212
surfaced. Many unbound symbols are deprecated, experimental, or static-buffer /
1313
low-level variants that an idiomatic Java API does not need.
1414

15-
**25** of the unbound symbols are deprecated upstream (carry `ZSTD_DEPRECATED` in
15+
**27** of the unbound symbols are deprecated upstream (carry `ZSTD_DEPRECATED` in
1616
`zstd.h`) and will never be bound — each is superseded by API already listed here.
1717
In the per-area tables below they are flagged **** in the Bound column; the same
1818
list is recorded in `Bindings.java`. Notably this binds `ZSTD_getFrameContentSize`
@@ -30,12 +30,12 @@ rather than the deprecated `ZSTD_getDecompressedSize`.
3030
| Errors | 4 / 4 | complete: name, typed `ZstdErrorCode`, and `description()` |
3131
| Reusable contexts | 6 / 8 | CCtx/DCtx create/free/compress/decompress |
3232
| Dictionary — simple | 10 / 23 | raw + digested (CDict/DDict) + dict-id queries; `_advanced`/`_byReference`/`Begin` variants not bound |
33-
| Dictionary training (ZDICT) | 4 / 12 | `trainFromBuffer`; cover/fastCover optimizers not bound |
33+
| Dictionary training (ZDICT) | 8 / 12 | trainFromBuffer, cover/fastCover optimizers, finalizeDictionary, getDictHeaderSize |
3434
| Streaming — compress | 3 / 22 | `ZstdOutputStream` (compressStream2 + buffer sizes) |
3535
| Streaming — decompress | 3 / 15 | `ZstdInputStream` (decompressStream + buffer sizes) |
3636
| Advanced parameters | 8 / 38 | all `ZSTD_cParameter` + `ZSTD_dParameter` via `ZstdCompressParameter`/`ZstdDecompressParameter`; `compress2`, `C/DCtx_setParameter`, `loadDictionary`, `c/dParam_getBounds`; MT inert on single-thread build |
37-
| Frame inspection | 9 / 13 | `ZstdFrame`: isFrame, header, compressedSize, decompressedBound, dictId, skippable read/write; getFrameProgression/_advanced not bound |
38-
| Memory sizing | 0 / 14 | `sizeof_*` / `estimate*` accounting not bound |
37+
| Frame inspection | 10 / 13 | `ZstdFrame` + getFrameProgression; `_advanced` not bound |
38+
| Memory sizing | 8 / 14 | sizeof_C/DCtx, sizeof_C/DDict, estimate C/DCtx + C/DDict size |
3939
| Low-level block | 0 / 12 | expert block/continue API not bound |
4040
| Sequences | 0 / 5 | sequence producer API not bound |
4141
| Misc / experimental | 0 / 10 | static-buffer init, param helpers, `copy*` not bound |
@@ -69,13 +69,18 @@ rather than the deprecated `ZSTD_getDecompressedSize`.
6969
| `ZSTD_CCtx_loadDictionary`, `ZSTD_DCtx_loadDictionary` | `ZstdOutputStream` / `ZstdInputStream` dictionary constructors |
7070
| `ZSTD_isFrame`, `ZSTD_findFrameCompressedSize`, `ZSTD_decompressBound`, `ZSTD_getDictID_fromFrame`, `ZSTD_getFrameHeader`, `ZSTD_isSkippableFrame`, `ZSTD_writeSkippableFrame`, `ZSTD_readSkippableFrame` | `ZstdFrame` (+ `ZstdFrameHeader`, `ZstdFrameType`, `ZstdSkippableContent`) |
7171
| `ZSTD_getErrorCode` | `ZstdException.code()` (+ `ZstdErrorCode`) |
72+
| `ZSTD_getFrameProgression` | `ZstdCompressStream.progress()` (`ZstdFrameProgression`) |
73+
| `ZDICT_optimizeTrainFromBuffer_cover`, `ZDICT_optimizeTrainFromBuffer_fastCover` | `ZstdDictionary.trainCover` / `trainFastCover` |
74+
| `ZDICT_finalizeDictionary`, `ZDICT_getDictHeaderSize` | `ZstdDictionary.finalizeFrom` / `headerSize()` |
75+
| `ZSTD_sizeof_CCtx`, `ZSTD_sizeof_DCtx`, `ZSTD_sizeof_CDict`, `ZSTD_sizeof_DDict` | `sizeOf()` on contexts / dicts / streams |
76+
| `ZSTD_estimateCCtxSize`, `ZSTD_estimateDCtxSize`, `ZSTD_estimateCDictSize`, `ZSTD_estimateDDictSize` | `Zstd.estimate*Size` |
7277

7378
## Roadmap (priority order)
7479

7580
1. ~~**Streaming**~~ — done: `ZstdOutputStream` / `ZstdInputStream` (`compressStream2`, `decompressStream`, bounded buffers, dictionary constructors, `pledgedSrcSize` via `withPledgedSize`). Remaining: `MemorySegment`-buffer driver.
7681
2. ~~**Advanced parameters**~~ — done: every `ZSTD_cParameter`/`ZSTD_dParameter` via `ZstdCompressParameter`/`ZstdDecompressParameter` (+ `bounds()`), on both contexts; `pledgedSrcSize`. `nbWorkers` is settable but inert until the native build enables multithreading.
77-
3. ~~**Frame inspection**~~ — done: `ZstdFrame` (`isFrame`, `header`, `compressedSize`, `decompressedBound`, `dictId`, skippable read/write); dict-id from raw/CDict/DDict. Remaining: `getFrameProgression`.
78-
4. **Better dictionaries**`ZDICT_optimizeTrainFromBuffer_cover` / `_fastCover`, `finalizeDictionary`.
82+
3. ~~**Frame inspection**~~ — done: `ZstdFrame` (`isFrame`, `header`, `compressedSize`, `decompressedBound`, `dictId`, skippable, `getFrameProgression`); dict-id from raw/CDict/DDict.
83+
4. ~~**Better dictionaries**~~done: COVER / fast-COVER optimisers, `finalizeDictionary`, `getDictHeaderSize`.
7984
5. ~~**Typed errors**~~ — done: `ZstdException.code()` returns `ZstdErrorCode` (via `getErrorCode`).
8085

8186
## Full symbol table
@@ -162,7 +167,7 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
162167
| `ZSTD_getDictID_fromDict` |||
163168
| `ZSTD_getDictID_fromFrame` |||
164169

165-
### Dictionary training, ZDICT (4/12)
170+
### Dictionary training, ZDICT (8/12)
166171

167172
| Symbol | Bound | zstd-jni |
168173
|---|:---:|:---:|
@@ -171,10 +176,10 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
171176
| `ZDICT_isError` |||
172177
| `ZDICT_trainFromBuffer` |||
173178
| `ZDICT_addEntropyTablesFromBuffer` |||
174-
| `ZDICT_finalizeDictionary` | ||
175-
| `ZDICT_getDictHeaderSize` | ||
176-
| `ZDICT_optimizeTrainFromBuffer_cover` | ||
177-
| `ZDICT_optimizeTrainFromBuffer_fastCover` | ||
179+
| `ZDICT_finalizeDictionary` | ||
180+
| `ZDICT_getDictHeaderSize` | ||
181+
| `ZDICT_optimizeTrainFromBuffer_cover` | ||
182+
| `ZDICT_optimizeTrainFromBuffer_fastCover` | ||
178183
| `ZDICT_trainFromBuffer_cover` |||
179184
| `ZDICT_trainFromBuffer_fastCover` |||
180185
| `ZDICT_trainFromBuffer_legacy` |||
@@ -259,7 +264,7 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
259264
| `ZSTD_DCtx_refPrefix` |||
260265
| `ZSTD_DCtx_refPrefix_advanced` |||
261266
| `ZSTD_DCtx_reset` |||
262-
| `ZSTD_DCtx_setFormat` |||
267+
| `ZSTD_DCtx_setFormat` |||
263268
| `ZSTD_DCtx_setMaxWindowSize` |||
264269
| `ZSTD_DCtx_setParameter` |||
265270
| `ZSTD_cParam_getBounds` |||
@@ -269,7 +274,7 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
269274
| `ZSTD_estimateCCtxSize_usingCCtxParams` |||
270275
| `ZSTD_freeCCtxParams` |||
271276

272-
### Frame inspection (9/13)
277+
### Frame inspection (10/13)
273278

274279
| Symbol | Bound | zstd-jni |
275280
|---|:---:|:---:|
@@ -281,30 +286,30 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
281286
| `ZSTD_getDecompressedSize` | — ᵈ ||
282287
| `ZSTD_getFrameHeader` |||
283288
| `ZSTD_getFrameHeader_advanced` |||
284-
| `ZSTD_getFrameProgression` | ||
289+
| `ZSTD_getFrameProgression` | ||
285290
| `ZSTD_isFrame` |||
286291
| `ZSTD_isSkippableFrame` |||
287292
| `ZSTD_readSkippableFrame` |||
288293
| `ZSTD_writeSkippableFrame` |||
289294

290-
### Memory sizing (0/14)
295+
### Memory sizing (8/14)
291296

292297
| Symbol | Bound | zstd-jni |
293298
|---|:---:|:---:|
294299
| `ZSTD_decodingBufferSize_min` |||
295300
| `ZSTD_decompressionMargin` |||
296-
| `ZSTD_estimateCCtxSize` | ||
301+
| `ZSTD_estimateCCtxSize` | ||
297302
| `ZSTD_estimateCCtxSize_usingCParams` |||
298-
| `ZSTD_estimateCDictSize` | ||
303+
| `ZSTD_estimateCDictSize` | ||
299304
| `ZSTD_estimateCDictSize_advanced` |||
300-
| `ZSTD_estimateDCtxSize` | ||
301-
| `ZSTD_estimateDDictSize` | ||
305+
| `ZSTD_estimateDCtxSize` | ||
306+
| `ZSTD_estimateDDictSize` | ||
302307
| `ZSTD_getBlockSize` | — ᵈ ||
303308
| `ZSTD_sequenceBound` |||
304-
| `ZSTD_sizeof_CCtx` | ||
305-
| `ZSTD_sizeof_CDict` | ||
306-
| `ZSTD_sizeof_DCtx` | ||
307-
| `ZSTD_sizeof_DDict` | ||
309+
| `ZSTD_sizeof_CCtx` | ||
310+
| `ZSTD_sizeof_CDict` | ||
311+
| `ZSTD_sizeof_DCtx` | ||
312+
| `ZSTD_sizeof_DDict` | ||
308313

309314
### Low-level block (0/12)
310315

@@ -329,7 +334,7 @@ sequence-producer hooks vs this library's frame-inspection and typed-error surfa
329334
|---|:---:|:---:|
330335
| `ZSTD_compressSequences` |||
331336
| `ZSTD_compressSequencesAndLiterals` |||
332-
| `ZSTD_generateSequences` |||
337+
| `ZSTD_generateSequences` |||
333338
| `ZSTD_mergeBlockDelimiters` |||
334339
| `ZSTD_registerSequenceProducer` |||
335340

0 commit comments

Comments
 (0)