RhoeJSON

Swift-native JSON engine, CLI, preview daemon, jq-inspired filters, binary codecs, and WASM facade.

RhoeJSON jq Compatibility Roadmap

RhoeJSON ships a jq-inspired filter surface for command-line muscle memory. It does not yet claim full jq compatibility. This roadmap keeps the compatibility story precise while we progressively close the high-impact semantic gaps.

Compatibility Labels

Implemented First: Path And Generator Semantics

The current implementation supports jq path arrays and generator-backed mutation for the most important document editing workflows:

The pinned subset cases live in Tests/RhoeJSONFilterTests/Fixtures/jq-conformance/subset-cases.json. Maintainers can compare those cases against an installed jq binary with:


bash Scripts/validate-jq-subset-conformance.sh

The offline Swift unit test suite also loads Tests/RhoeJSONFilterTests/Fixtures/jq-conformance/golden-cases.json, a checked-in manifest of exact-compatible jq filters and expected output streams. Those golden fixtures give the public package deterministic regression coverage without requiring jq at test time, while the conformance script re-checks the same checked-in expectations against a local jq oracle when available.

Second Cliff: Variables, Functions, Reduce

The first lexical evaluation slice is implemented:

The jq-oracle harness labels forward references as inspired, not exact-compatible, because jq itself rejects calls to functions that are defined later in the same program. The remaining work in this cliff is narrower non-local control-flow semantics:

The evaluator environment now carries input value, lexical bindings, function definitions, filter-argument bindings, and a shared input provider for input/inputs. A later diagnostic pass should add source ranges and clearer recursion-depth failure messages.

Then: Regex And String Fidelity

The first regex fidelity slice is implemented:

The remaining string fidelity lane should cover:

Then: Format Encoders And Math Utilities

The next utility slice is implemented for high-frequency shell workflows:

The current math contract is intentionally pinned to deterministic finite inputs covered by the subset harness. Broader floating-point edge cases (nan, infinities, platform-specific transcendental rounding) remain outside the 0.1.0 compatibility claim.

Then: jq-Style CLI Flags

The current rhoejson jq command supports these exact-compatible jq-style input/output flags:

Program-file loading reads one jq-inspired filter source from disk. RhoeJSON now accepts multiple JSON input paths, parses multiple whitespace-separated JSON texts, and exposes jq-style input and inputs over the shared input stream.

It also supports exact jq variable binding flags:

--args and --jsonargs follow jq's tail-consuming shell grammar: every remaining value token is exposed through $ARGS.positional. As in jq, use the -- end-of-options marker after --args or --jsonargs when a positional value itself begins with -.

The staged public preview also accepts these RhoeJSON convenience forms:

A fuller jq-compatible shell surface would add:

Later Compatibility Candidates

Conformance Strategy

The harness starts with a pinned behavioral subset manifest maintained in this repo. Before claiming broader jq compatibility, we should add a licensing review and pinned import strategy for upstream jq tests, then classify each imported case as exact-compatible, jq-inspired, deferred, or unsupported.