Skip to content

v3.5.0: Keyed-tabular map encoding (§7.2a)

Choose a tag to compare

@blackwell-systems blackwell-systems released this 07 Aug 16:44
· 71 commits to main since this release

Keyed-tabular map encoding (Section 7.2a)

A JSON object whose values are all objects forming a tabular set is encoded as a keyed table: the shared value fields are declared once in a header, with one key-prefixed row per member, marked by [N:]. This is the object-valued analogue of Section 7.4 tabular array encoding. It is canonical by default, first-class in nested (Sections 7.4.4, 7.6) and streaming ([?:], Section 8) positions, and reuses generic delta (Section 10a) with the map key as the delta identity.

Additive under the Stable lifecycle. Existing payloads are unaffected — the [N:] marker was previously an invalid count. A pre-v3.5 decoder rejects [N:], so decoders must be updated to read v3.5 map output.

Also in v3.5.0

  • Negative zero canonicalizes to 0 for both integer and floating-point values (Section 2.3.1). -0 and 0 denote the same value, and integer negative zero is not representable in most language number models.
  • A buffered graph header omits budget, tokens, and edges when their value is zero and always emits symbols (Sections 3.2, 16.1), so header output is deterministic across encoders.
  • Structural tokens and delimiters are matched at the Unicode scalar (code point) level, not grapheme clusters (Section 1), so structural parsing is identical across implementations.

Conformance

Coverage matrix: 31/31 Section 16.5 conditions, 26/26 encoder/decoder checklist, 0 gaps. All six SDKs pass the shared fixtures byte-for-byte. A re-encode idempotence check (generic, graph, and delta) and a differential cross-SDK fuzz were added to the verification suite.