Skip to content

Releases: blackwell-systems/gcf-go

v1.2.3

19 Jun 14:39

Choose a tag to compare

v1.2.2

19 Jun 05:54

Choose a tag to compare

Full Changelog: v1.2.0...v1.2.2

v1.2.1

18 Jun 17:58

Choose a tag to compare

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

14 Jun 21:46

Choose a tag to compare

Spec v3.1 Conformance

Spec change

  • tool field 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

13 Jun 06:12

Choose a tag to compare

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

  • EncodeGeneric output 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

11 Jun 05:49

Choose a tag to compare

  • CLI: encode-generic and decode-generic subcommands
  • Both graph and generic profiles supported from the command line
  • Fix: encode-generic now preserves JSON key insertion order (uses ParseJSONOrdered)

v1.0.1

10 Jun 10:43

Choose a tag to compare

Fix

  • Graph StreamEncoder now emits ##! summary trailer (was still using old ## _summary format from v1.4)

Install

go get github.com/blackwell-systems/gcf-go@v1.0.1

gcf-go v1.0.0

10 Jun 08:25

Choose a tag to compare

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: OrderedMap type preserving JSON key insertion order
  • ParseJSONOrdered: ordered JSON parser for conformance-grade encoding
  • Property-based round-trip tests (configurable via GCF_ITERATIONS env 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

  • EncodeGeneric emits GCF profile=generic header
  • DecodeGeneric requires GCF 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
  • ##! summary trailer 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

06 Jun 22:24

Choose a tag to compare

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

06 Jun 06:02

Choose a tag to compare

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 primitives

GenericStreamEncoder

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 trailer

Also 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