Skip to content

Commit 0ac3441

Browse files
dfa1claude
andcommitted
docs: record experimental-tier exclusion (CCtxParams) in binding scope
The ZSTD_CCtx_params bundle is ZSTDLIB_STATIC_API (experimental, gated behind ZSTD_STATIC_LINKING_ONLY, no stability guarantee, and not guaranteed to survive the -fvisibility=hidden export table). It only saves a few setParameter calls at context init and the bound per-context ZSTD_CCtx_setParameter path covers the same need, so it is intentionally not bound. Extend ADR 0013 to exclude the experimental tier and note the reason on the supported.md Advanced parameters row. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent 99e7dd6 commit 0ac3441

2 files changed

Lines changed: 10 additions & 1 deletion

File tree

adr/0013-binding-coverage-scope.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ training), and frame/skippable-frame introspection. **Exclude** deprecated
1818
functions and the `legacy/` and `deprecated/` source trees (the native build
1919
compiles only `common`, `compress`, `decompress`, `dictBuilder`).
2020

21+
Also **exclude the experimental tier** — symbols declared `ZSTDLIB_STATIC_API`
22+
(reachable only under `ZSTD_STATIC_LINKING_ONLY`, no stability guarantee, and
23+
not guaranteed to survive the `-fvisibility=hidden` export table). Notably this
24+
covers the `ZSTD_CCtx_params` bundle (`ZSTD_createCCtxParams`,
25+
`ZSTD_CCtxParams_setParameter`, `ZSTD_CCtx_setParametersUsingCCtxParams`, …):
26+
it only saves a few `setParameter` calls at context init — never on a hot path —
27+
so the experimental-API risk is not worth the marginal value. The per-context
28+
`ZSTD_CCtx_setParameter` path (already bound) covers the same need.
29+
2130
The full coverage map — every public symbol, what is bound, and what is
2231
intentionally omitted — is maintained in `docs/supported.md`.
2332

docs/supported.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ rather than the deprecated `ZSTD_getDecompressedSize`.
3333
| 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) |
36-
| Advanced parameters | 14 / 38 | all `ZSTD_cParameter` + `ZSTD_dParameter` via `ZstdCompressParameter`/`ZstdDecompressParameter`; `compress2`, `C/DCtx_setParameter`, `C/DCtx_reset`, `C/DCtx_loadDictionary`, `CCtx_refCDict`/`DCtx_refDDict`, `C/DCtx_refPrefix`, `c/dParam_getBounds`; MT inert on single-thread build |
36+
| Advanced parameters | 14 / 38 | all `ZSTD_cParameter` + `ZSTD_dParameter` via `ZstdCompressParameter`/`ZstdDecompressParameter`; `compress2`, `C/DCtx_setParameter`, `C/DCtx_reset`, `C/DCtx_loadDictionary`, `CCtx_refCDict`/`DCtx_refDDict`, `C/DCtx_refPrefix`, `c/dParam_getBounds`; MT inert on single-thread build. The `CCtxParams` cluster is experimental (`ZSTDLIB_STATIC_API`) and intentionally unbound — see [ADR 0013](../adr/0013-binding-coverage-scope.md) |
3737
| Frame inspection | 12 / 13 | `ZstdFrame` + getFrameProgression; `_advanced` not bound |
3838
| Memory sizing | 9 / 14 | sizeof_C/DCtx, sizeof_C/DDict, estimate C/DCtx + C/DDict size, in-place decompression margin |
3939
| Low-level block | 0 / 12 | expert block/continue API not bound |

0 commit comments

Comments
 (0)