Releases: blackwell-systems/gcf-go
Release list
v1.3.1
Flatten Opt-Out
EncodeGeneric(data, gcf.GenericOptions{NoFlatten: true})disables nested object flattening- CLI:
gcf encode-generic --no-flatten - Backward compatible:
EncodeGeneric(data)unchanged
Bug Fixes
- Field names containing
>excluded from tabular columns (spec rule 7.4.6.1.4) - Field names containing
>no longer eligible for flattening analysis - Decoder no longer treats literal
>in key names as a path separator - Decoder accepts orphan attachments (fields excluded from column list)
- Fuzz key generator includes
>for adversarial testing; 12 targeted edge case tests
Full changelog: v1.3.0...v1.3.1
Full Changelog: v1.3.0...v1.3.1
v1.3.0: Nested Object Flattening (Spec v3.2)
Nested Object Flattening
Encoder automatically flattens fixed-shape nested objects into > path column names. Decoder reconstructs nesting from > paths.
## [2]{id,"customer>name","customer>email",items,total}
ORD-1|Alice|[email protected]|^|59.98
Instead of:
## [2]{id,customer,items,total}
@0 ORD-1|^{name,email}|^|59.98
Alice|[email protected]
Impact
- 20-48% fewer tokens on deeply nested API data (Jira, Stripe, K8s, calendar events)
- 100% comprehension on every frontier model (validated across 20 models, 8 providers)
- Generation validity: 0% to 96-100% on Mistral Medium
- Falls back to attachment mechanism for variable-length arrays, objects with different keys, objects with
>in key names, empty nested objects - Round-trip guarantee preserved
Validation
- 200K random + 100K adversarial round-trips: zero failures
- 10M bracket-colon fuzz: zero failures
- 173 conformance fixtures (15 new for flattening)
- CI: Go 1.22, 1.23, 1.26 all passing
v1.2.3
v1.2.2
v1.2.1
Patch release. Fixes encoder quoting for edge cases involving bracket-colon patterns in string values.
Full Changelog: v1.2.0...v1.2.1
v1.2.0
Spec v3.1 Conformance
Spec change
toolfield in graph profile header is now optional (SHOULD be present for MCP, not required)
Bug fixes
- Quote strings containing commas in scalar values
- Decode v2-format indented attachments in tabular rows
- Reject duplicate attachments on the same row
- Reject orphan attachments on rows without
^cells
Conformance
- 157/157 fixtures passing
- 23.25B+ round-trips verified across all 6 implementations, zero failures
Full spec release: gcf v3.1.0
Full Changelog: v1.1.0...v1.2.0
v1.1.0: Inline Schema Encoding
v1.1.0: Inline Schema Encoding
The generic profile encoder now produces inline schema format for nested objects with 3+ scalar fields. This is a breaking change from v1.0.x output.
Breaking Changes
EncodeGenericoutput format changed (inline schemas, no attachment indentation)- Decoder no longer accepts v1.0.x indented attachment syntax
- Comma no longer quoted in pipe-delimited contexts
- Strings starting with digits no longer quoted unless they match JSON number grammar
New Features
- Inline object schema (
^{fields}): nested objects encoded positionally - Shared array schemas: identical nested arrays omit field headers after first row
- 25.5% fewer tokens than TOON across 15 real-world datasets
- Codex CLI backend for eval harness (OpenAI models via ChatGPT subscription)
- OpenAI Batch API support for eval
Integrity
- 477M lossless round-trip iterations
- 100% comprehension accuracy on every frontier model tested
- 156 conformance fixtures passing
- All error detection ported from v2 decoder (duplicate keys, orphan attachments, etc.)
v1.0.2: CLI generic profile + key ordering fix
- CLI:
encode-genericanddecode-genericsubcommands - Both graph and generic profiles supported from the command line
- Fix:
encode-genericnow preserves JSON key insertion order (usesParseJSONOrdered)
v1.0.1
Fix
- Graph
StreamEncodernow emits##! summarytrailer (was still using old## _summaryformat from v1.4)
Install
go get github.com/blackwell-systems/[email protected]
gcf-go v1.0.0
Reference implementation for GCF SPEC v2.0 Stable
133 conformance fixtures passing. 80M property-based round-trips with zero failures. 7.9M fuzz executions, 3 bugs found and fixed. Cross-language conformance matrix verified.
New
scalar.go: common scalar grammar (quoting, escaping, parsing, number formatting)orderedmap.go:OrderedMaptype preserving JSON key insertion orderParseJSONOrdered: ordered JSON parser for conformance-grade encoding- Property-based round-trip tests (configurable via
GCF_ITERATIONSenv var) - Fuzz targets for encoder and decoder with saved crash regression cases
- Conformance test runner for 133 fixtures
- Cross-language encode/decode matrix verification
Breaking changes from v0.6.0
EncodeGenericemitsGCF profile=genericheaderDecodeGenericrequiresGCF profile=header- Strings colliding with typed literals are quoted (
"true","123","-") - Full JSON string escaping (
\b,\f,\n,\r,\t,\uXXXX, surrogate pairs) - Full JSON number grammar with exponent notation
-for null,~for absent fields,^for nested attachments##! summarytrailer replaces## _summary- Graph encoder emits
profile=graph, sorts symbols by score descending - Graph encoder assigns IDs after sorting (sequential in output order)
- Session encoder uses session-stable IDs across calls
Lossless round-trip invariant
decodeGeneric(encodeGeneric(value)) == value for every JSON value. Proven by:
- 80M random and adversarial round-trips
- 7.9M fuzz executions (3 bugs found and fixed: negative zero, large integer precision, quoted brace in field declarations)
- Structural proof by construction (scalar injectivity + container injectivity)
Install
go get github.com/blackwell-systems/[email protected]