Skip to content

Commit de11ecb

Browse files
release: v2.4.0 (opt-in labeled trailer counts, SPEC 8.4.1)
1 parent f4ffd6a commit de11ecb

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
## v2.4.0 (2026-07-12)
4+
5+
### Streaming: opt-in labeled trailer counts (SPEC §8.4.1)
6+
7+
- New `labeled_trailer_counts` keyword on `StreamEncoder`. When set, the `##! summary` graph streaming trailer emits `counts=` in the labeled form `label:count` per group (e.g. `counts=targets:2,related:1,edges:3`) instead of the default positional values-only form (`counts=2,1,3`). Default false is byte-identical to prior output.
8+
- Opt-in and non-breaking: a producer-side comprehension aid for known weak consumers. The trailer counts remain informational (decoder-ignored) in both forms; neither changes the decoded payload. Mirrors the `gcf-go` reference.
9+
10+
### Conformance and docs
11+
12+
- The conformance runner now executes the `graph-stream-encode` fixtures (streaming-encode parity, previously decode-only): fixture 004 (positional trailer) and 005 (labeled trailer).
13+
- README: corrected the streaming example trailer from the defunct `## _summary … sections=` to the real `##! summary … counts=`; README now leads with the project diagram.
14+
- Added a generic-delta fuzz test (decoder never crashes; string round-trip).
15+
316
## v2.3.0 (2026-07-12)
417

518
### Generic-profile delta encoding (SPEC §10a)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "gcf-python"
7-
version = "2.3.0"
7+
version = "2.4.0"
88
description = "The AI-native wire format for structured data. 50-92% fewer tokens than JSON, with multi-turn delta encoding for agent loops. 100% comprehension on every frontier model. Zero dependencies."
99
readme = "README.md"
1010
license = {text = "MIT"}

0 commit comments

Comments
 (0)