This release makes jaq a lot lazier. In particular, several core filters, such as debug, are now evaluated as late as possible #131, and filters passed to path expressions are now also executed lazily #150. That means that many filters which did not terminate before now terminate!
Backwards-compatible additions
Thanks go especially to @kklingenberg for implementing several new functionalities!
- Support for recursive object merging via
a * bby @kklingenberg #130 - Add
envfilter and$ENVvariables by @kklingenberg #128 - Extend path syntax to support paths like
.a.[]#145 group_byterminates as soon as there is an error #129
Breaking Changes
- The
last(f)filter now returns no output instead ofnullwhenfyields no output. This is to make it consistent withfirst(f), which has the same behaviour. 51d3f51 - Rename
--compactto--compact-outputto match jq #148 to_entriesandpathsnow return objects without sorting keys, like jq 484dd27
Eliminated bugs
- Calling jaq without a filter now correctly executes the identity filter #147
- Calling jaq with an empty filter (
'') now yields an error message instead of crashing, thanks to a newariadnerelease --- thanks to @zesterer! - Processing long sequences with
foreachused to crash with a stack overflow at the end, for example when executingforeach limit(1000000; repeat(1)) as $x (0; .+$x). This is now not longer the case. 854d22c
Full Changelog: v1.2.0...v1.3.0