Repository navigation
v0.1.0 — Initial Release
seuil v0.1.0
A complete, safe JSONata implementation in Rust — JSON query, transform, and expression evaluation.
Highlights
- 99.6% JSONata spec compliance — 1,027 of 1,031 official test cases pass
- Zero
unsafecode —#![forbid(unsafe_code)]enforced - 47 built-in functions — strings, math, arrays, objects, HOFs, date/time, regex
- Compile once, evaluate many —
Seuil::compile("expr").evaluate(&json) - Arena allocation via bumpalo for cache-friendly evaluation
- Deterministic simulation testing via injectable
Environmenttrait
Quick Start
[dependencies]
seuil = "0.1"
serde_json = "1"use seuil::Seuil;
let expr = Seuil::compile("orders[status='paid'].amount ~> $sum()")?;
let data = serde_json::json!({
"orders": [
{"status": "paid", "amount": 100},
{"status": "pending", "amount": 50},
{"status": "paid", "amount": 200}
]
});
let result = expr.evaluate(&data)?;
assert_eq!(result, serde_json::json!(300.0));Testing Rigor
- VOPR campaigns: 10,000+ seeds, zero panics
- Chaos testing: 9 fault injection categories
- Property-based: ~14,000 generated cases via proptest
- Fuzzing: libfuzzer with corpus and dictionary
- CI: GitHub Actions on every push, nightly fuzzing and VOPR
Full Changelog
See CHANGELOG.md