Releases: pal-123456789/jaq-lite
Release list
jaq-lite v0.1.0 -- Zero Dependency hackathon submission
jaq-lite parses, formats and queries JSON using nothing but the Rust standard
library. The dependency manifest is empty, and Cargo.lock is committed so that
can be checked rather than trusted.
Build it and check it
cargo build --release
cargo test --release
cargo run --release -- . file.json
rust-toolchain.toml pins 1.98.0. There is no build script, no vendored source
and no code generation step.
What the tests actually assert
191 tests, 0 failing. All 318 JSONTestSuite parsing fixtures are asserted: 95 of
95 documents that must parse, 188 of 188 that must be rejected, and all 35
implementation-defined cases decided in advance by four written policies rather
than by whatever the parser happened to do. Twenty-five of those fixtures are
not valid UTF-8 and three nest deeper than 128 levels, so the corpus is read as
bytes and the depth guard is load-bearing.
62 outputs are compared byte for byte against jq 1.8.1 on every push, and the
number grammar is hand-written because f64::from_str accepts inf, NaN,
.5 and 5. while RFC 8259 does not -- 19 of the 47 single-literal rejection
fixtures pass Rust's own parser and are caught by the hand-rolled one.
Bonus claims
Reproducible Build, Package Killer and STDLIB Log: +11 of a possible +16. Single
File is declined in writing rather than left ambiguous. Every claim names the
file and the command that settles it; see the Bonus claims section of
README.md, and CLAIMS.md for the row-by-row ledger.
The reproducible-build figure is published as a dated sample tied to the commit
that produced it, not as a constant -- BUILD_LOG.md explains why a digest that
was measured 31 commits ago is evidence about that tree and not about this one.
Stated limits
In README.md, rather than left for a reader to discover: JQ_COLORS is not
parsed, there is no --max-depth flag, and jq's 1e2 to 1E+2 exponent
canonicalization is a named deliberate divergence. Numbers keep their exact
source text, so a 30-digit integer round-trips unchanged and -0.0 stays
-0.0.
MIT licensed. Built for the Zero Dependency hackathon, 2026-08-28 to
2026-08-31.