Distribution¶
The conformance suite is published as a versioned, downloadable artifact so a porter can pin their runner to a specific suite version instead of tracking the repository directly.
Latest release¶
kbars-conformance-0.1.0.zip (sha256)
This link is updated by hand each time the suite version changes; see
RELEASING.md for the
checklist that keeps it current.
All versions¶
| Version | ZIP | sha256 |
|---|---|---|
| 0.1.0 | kbars-conformance-0.1.0.zip | kbars-conformance-0.1.0.zip.sha256 |
Every released version's ZIP and sidecar stay published — none are pruned from the site as new versions ship.
What's in the ZIP¶
Each archive is self-contained: it bundles the fixtures, their JSON Schemas, manifest.json,
ERROR-CODES.md/error-codes.json, and conformance/README.md, all at the same relative paths
they occupy in the repository's conformance/ directory, plus the matching version of the Bars
specification under spec/<version>/. A runner that validates against the ZIP's
own bundled schemas — and reads the bundled specification for the normative rules — works fully
offline. The archive is built reproducibly (./gradlew packageConformance) — fixed file order, no
timestamps — so two builds from the same source tree produce byte-identical ZIPs, and
checksumConformancePackage emits the .sha256 sidecar above.
Schema URLs: online is latest, the ZIP is pinned¶
Every schema declares a canonical $id under https://bars.commonsware.com/conformance/schema/, e.g.:
Those URLs — and the same-path fixture JSON alongside them — always resolve to the current suite
version on the site. There is no per-version schema URL scheme (no
/conformance/0.1.0/schema/...). If you need a specific version pinned in place, use that version's
ZIP: its bundled schemas and fixtures never change underneath you.
Browsing fixtures online¶
The fixtures themselves are also served at their on-disk paths, e.g.
conformance/render/each-block.json and
conformance/manifest.json — the site mirrors conformance/
byte-for-byte (copyConformanceToSite, verified by checkConformanceSite), so what you see on the
site is exactly what ships in the repository and the ZIP.
Reference grammar (not bundled)¶
The suite does not include the reference implementation's ANTLR grammar — neither in conformance/
nor in the ZIP. It is browsable directly in the repository:
Treat both as informative, not normative, and read them with three caveats in mind:
- The Bars specification governs, not the grammar. Per its precedence rule, the specification is normative, the conformance suite is the executable test of conformance, and this grammar is informative — it is what the reference implementation happens to use. Where the grammar and the specification's prose would ever disagree, the prose governs; the specification also embeds this same grammar verbatim (see Lexical Structure).
- They describe the post-pre-pass token stream. A hand-written pre-pass rewrites unterminated
opener delimiters before ANTLR ever sees the source (see the
prepass/fixtures); the grammar has no rule for that step and silently assumes its output. - They're ANTLR-specific.
KBarsParser.g4declaresoptions { tokenVocab = KBarsLexer; }, so the two files are a pair — neither regenerates anything alone. A porter not using ANTLR can read them for structure but cannot run them directly.
Changelog¶
See the Conformance Suite Changelog for what changed in each suite version.
Consuming this in your runner¶
See Writing a Workalike and the porting guide overview for how to build a runner against the fixtures, and Fixture Schemas / Error Codes for the per-shape field reference and error taxonomy referenced above.