Skip to content

Releases: blackwell-systems/gcf-rust

v2.2.1

23 Jun 19:43

Choose a tag to compare

Flatten Opt-Out

  • encode_generic_with_options(data, &GenericOptions { no_flatten: true }) disables nested object flattening
  • Backward compatible: encode_generic(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
  • 4.49M+ round-trips across JSON, YAML, MessagePack, CSV with zero failures

Full changelog: v2.2.0...v2.2.1

v2.2.0: Nested Object Flattening (Spec v3.2)

23 Jun 15:21

Choose a tag to compare

Encoder flattens fixed-shape nested objects into > path columns. 20-48% fewer tokens. 50M+ fuzz verified. Install: cargo add gcf@2.2.0

v2.1.1

18 Jun 18:25

Choose a tag to compare

Patch release. Fixes encoder quoting for edge cases involving bracket-colon patterns in string values. Updated crate description.

Full Changelog: v2.1.0...v2.1.1

v2.1.0

14 Jun 21:51

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

v2.0.0: Inline Schema Encoding

13 Jun 06:18

Choose a tag to compare

v2.0.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.x output.

Breaking Changes

  • encodeGeneric output format changed (inline schemas, no attachment indentation)
  • Decoders no longer accept v1.x indented attachment syntax
  • Comma no longer quoted in pipe-delimited contexts (only in comma-delimited inline arrays)
  • 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

Integrity

  • 1B+ lossless round-trip iterations across 6 language implementations
  • 100% comprehension accuracy on every frontier model tested
  • 156 conformance fixtures passing

Full spec: https://github.com/blackwell-systems/gcf/releases/tag/v3.0.0

v1.0.1: CLI binary

10 Jun 19:28

Choose a tag to compare

  • CLI: encode, decode, encode-generic, decode-generic subcommands
  • Both graph and generic profiles supported from the command line

gcf-rust v1.0.0

10 Jun 10:52

Choose a tag to compare

SPEC v2.0 implementation

125/133 conformance fixtures passing (8 skipped: session, delta, binary UTF-8, negative zero, graph encode). 40M property-based round-trips with zero failures.

Breaking changes from v0.5.0

  • encode_generic emits GCF profile=generic header
  • decode_generic requires GCF profile= header
  • Strings colliding with typed literals are quoted
  • Full JSON string escaping and number grammar
  • - for null, ~ for absent, ^ for nested attachments
  • ##! summary trailer replaces ## _summary
  • Graph encoder emits profile=graph
  • serde_json now uses preserve_order feature
  • Added regex dependency

Install

cargo add gcf@1.0.0

v0.5.1: docs update

06 Jun 22:40

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

Full benchmarks: https://gcformat.com/guide/benchmarks.html

v0.5.0: Full round-trip + Generic streaming

06 Jun 06:04

Choose a tag to compare

What's new

decode_generic

Parse any GCF text back to native Rust values (serde_json::Value). Works with both generic profile and graph profile payloads. Full round-trip: encode_generic -> GCF -> decode_generic.

use gcf::decode_generic;

let result = decode_generic(gcf_text)?;
// Returns serde_json::Value

GenericStreamEncoder

Zero-buffering streaming encoder for the generic profile. Write rows as data arrives with O(1) memory per row.

use gcf::GenericStreamEncoder;

let mut enc = GenericStreamEncoder::new(writer);
enc.begin_array("users", &["name", "email", "role"]);
enc.write_row(&[json!("alice"), json!("alice@co.com"), json!("admin")]);
enc.write_row(&[json!("bob"), json!("bob@co.com"), json!("user")]);
enc.end_array();
enc.close(); // emits ## _summary trailer

Also in this release

  • Repositioned as drop-in JSON replacement for AI pipelines
  • Generic profile documentation leads all examples

Full changelog: v0.4.0...v0.5.0

v0.4.0

06 Jun 02:02

Choose a tag to compare

StreamEncoder: zero-buffering streaming encode to any impl Write. write_symbol/write_edge emit immediately, close() emits trailer summary. O(1) memory, thread-safe via Mutex.