1.0
jaq is a jq clone with an emphasis on correctness, speed, and simplicity.
jaq 1.0 brings lots of features compared to the last stable release (0.10).
A short summary with examples:
- Recursive/nested function definitions:
def walk(f): def rec: (.[]? |= rec) | f; rec;
- Variable arguments:
def foo($v; f): ...
- String interpolation:
@uri "https://www.google.com/search?q=\(.search)"
- if-then expressions without else branch:
if . < 0 then - . end
- try-catch expressions:
try . * 10 catch "NaN"
- Many, many new filters
- Native filter API: allows you to create custom versions of jaq where you can supply your own filters written in Rust
- Automatically built binaries
For more details on these changes, see the alpha, beta, and gamma release information.
Given that this is an 1.0 release, I will try to maintain a stable API.
Among others, future improvements that should be possible within the current API include optimisation of tail recursive calls (for better recursion performance) as well as parallel execution.
Thanks again to all contributors since the last stable release!
Full Changelog: v1.0.0-gamma...v1.0.0