Release history¶
Every published version of the SDK, newest first. A release candidate
(X.Y.Z-rc.N) is a pre-release: no installer picks it unless you ask for it.
| Language | Install a release | Install a release candidate |
|---|---|---|
| Python | pip install semq==X.Y.Z |
pip install semq==X.Y.ZrcN |
| Rust | cargo add semq@X.Y.Z |
cargo add semq@=X.Y.Z-rc.N |
| Go | go get github.com/The-SEMQ-Group/semq/bindings/go@vX.Y.Z |
go get github.com/The-SEMQ-Group/semq/bindings/go@vX.Y.Z-rc.N |
| TypeScript | npm install @semq/sdk@X.Y.Z |
npm install @semq/sdk@next |
See Compatibility and migration for what each version guarantees.
| Version | Date | Type |
|---|---|---|
| 1.0.0 | 2026-10-05 | Release |
1.0.0 - 2026-10-05¶
First public release.
Added¶
- A core built around states with an identity. The C library owns every
rule that determines bytes or verdicts, and the Python, Rust, Go and
TypeScript/WebAssembly bindings are thin wrappers over its 67-function ABI.
Five types and one service:
CodecConfig(quant(dim, bins),phase(dim, sectors),orbit(dim, scale), a 13-byte canonical form),Codec(encode,decode,unpack),Encoding(sortedu64orutf8ids, canonical rows, a manifest,content_digestandstate_id;save/load,concat,diff),Diff(added,removed,changedwith hamming distances,manifest_changes,units,within,as_dict),Floor(measurefrom null diffs; bound to the config, id kind and reference it was measured against, with the number of nulls, a versioned schema forfloor.json, and a verdict that fails on a changedencoderorencoder_revision) andBuildInfo. Six errors cover every failure:InvalidInput,Incompatible,FormatError,IntegrityError,Unsupported,Native. - Direct constructors in every binding:
Codec.quant(dim, bins),phaseandorbit(RustCodec::quant, GoNewQuantCodec, TypeScriptawait Codec.quant) build the codec and its config in one call;CodecConfigremains for files and floors. In TypeScript they load the wasm module first, so they need no priorawait load(). - A one-line, human-readable form of
Encoding,DiffandFloor, identical in every binding: Pythonstr(), RustDisplay, GoString(), TypeScripttoString(). ADiffreads1 of 3 rows changed: doc-3 (hamming 3). 0 added, 0 removed.Encodings compare bystate_id: Python==, RustPartialEq, TypeScriptEncoding.equals(other). - The
.semqfile format, version 2: config, ids, rows, manifest and two SHA-256 identities, validated in a fixed order before any allocation proportional to a declared size. - The input contract: unit-norm finite float32 rows with subnormals canonicalized to zero, so the bytes do not depend on the flush-to-zero state; the round-to-nearest mode is required.
- Three operators.
quantuses the derived range2 / sqrt(dim).phasepacks nibbles whensectors <= 16, and its angle polynomial stays within 0.04° ofatan, keeping neighbouring inputs in order across the 45° diagonal.orbitfixes its alphabet at 19, withscalein[1, 2^30]. - SIMD kernels: AVX2 and AVX-512 are selected only when the CPU and the operating system both support them, and every backend produces the same bytes as the scalar kernel.
- A known-answer self-test: before creating a codec, the core checks the selected kernel against the scalar kernel's bytes for fixed rows, and SHA-256 against a known digest, and refuses to create the codec if either differs.
- The
semqcommand:show,diff [--floor],floor [--min-nulls N](three null rebuilds by default),version, with exit codes0/1/2. - Conformance vectors under
tests/conformance/, generated by the core's test binary, cross-checked by an independent pure-Python reference for the non-kernel contracts, executed by every host, and gated in CI on every architecture (tools/conformance.py). - Two reference pages that state the contracts exactly: the core contracts (input rows, operator rules, diff, floor and the two report schemas) and the file format byte by byte.
- Packaging: the static archive needs only libc and libm; the Rust crates
bundle the core sources for static linking; the Go module carries the core
too and cgo compiles it, so
go getneeds only a C compiler; the Python package ships one wheel per platform for Python 3.11 and newer, is tested on 3.11 to 3.14, and depends only oncffiandnumpy. - Reader fuzzing, allocation-failure cleanup tests, compiled ABI and layout checks, and artifact consumers that install the packages without a checkout.
- Licensing: the SDK is licensed under the PolyForm Noncommercial License
1.0.0. Every package ships
LICENSE.mdandNOTICE, and the npm package also shipsTHIRD_PARTY_LICENSESfor the Emscripten runtime it bundles.