Releases: blackwell-systems/gcf-go
v1.2.3
Full Changelog: v1.2.2...v1.2.3
v1.2.2
Full Changelog: v1.2.0...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.)
Full spec: https://github.com/blackwell-systems/gcf/releases/tag/v3.0.0
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/gcf-go@v1.0.1
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/gcf-go@v1.0.0
v0.6.1
What's new
Updated all documentation with multi-model benchmark data:
- 1,300+ LLM evaluations across 10 models, 3 providers, and 51 independent test runs
- 90.5% average comprehension accuracy (four models hit 100%: Sonnet, Gemini 2.5 Pro, Gemini 3.1 Pro, Gemini 3.5 Flash)
- 5/5 generation validity on every frontier model from Anthropic, OpenAI, and Google
- TOON's official decoder rejects LLM-generated output on 7 of 9 models tested
- GCF wins all 6 datasets on TOON's own benchmark
- Eval README updated (23 comprehension runs, 10 models, 3 providers)
Full benchmarks: https://gcformat.com/guide/benchmarks.html
CLI binaries (optional)
The attached binaries are the gcf CLI tool (gcf encode, gcf decode, gcf stats). These are optional. If you're using GCF as a Go library, you only need go get github.com/blackwell-systems/gcf-go. The CLI is for people who want to convert files from the command line without writing code.
v0.6.0: Full round-trip + Generic streaming
What's new
DecodeGeneric
Parse any GCF text back to native Go values. Works with both generic profile and graph profile payloads. Full round-trip: EncodeGeneric -> GCF -> DecodeGeneric.
result, err := gcf.DecodeGeneric(gcfText)
// Returns map[string]any, []any, or primitivesGenericStreamEncoder
Zero-buffering streaming encoder for the generic profile. Write rows as data arrives with O(1) memory per row.
enc := gcf.NewGenericStreamEncoder(w)
enc.BeginArray("users", []string{"name", "email", "role"})
enc.WriteRow([]any{"alice", "alice@co.com", "admin"})
enc.WriteRow([]any{"bob", "bob@co.com", "user"})
enc.EndArray()
enc.Close() // emits ## _summary trailerAlso in this release
- Repositioned as drop-in JSON replacement for AI pipelines
- Multi-model eval: 12 runs across 6 models, GCF wins 11, ties 1
Full changelog: v0.5.0...v0.6.0