Skip to content

Releases: GotLaw/jq

jq 1.5

18 Nov 19:43
Compare
Choose a tag to compare

Thanks to the 20+ developers who have sent us PRs since 1.4, and the many contributors to issues and the wiki.

The manual for jq 1.5 can be found at https://stedolan.github.io/jq/manual/v1.5/

Salient new features since 1.4:

regexp support (using Oniguruma)!

a proper module system

import "foo/bar" as bar; # import foo/bar.jq's defs into a bar::* namespace

and

include "foo/bar"; # import foo/bar.jq's defs into the top-level

destructuring syntax (. as [$first, $second, {$foo, $bar}] | ...)

math functions

an online streaming parser

minimal I/O builtions (inputs, debug)

One can now write:

jq -n 'reduce inputs as $i ( ... )'

to reduce inputs in an online way without having to slurp them first! This works with streaming too.

try/catch, for catching and handling errors (this makes for a dynamic non-local exit system)

a lexical non-local exit system

One can now say

label $foo | ..... | break $foo

where the break causes control to return to the label $foo, which
then produces empty (backtracks). There's named and anonymous
labels.

tail call optimization (TCO), which allows efficient recursion in jq

a variety of new control structure builtins (e.g., while(cond; exp), repeat(exp), until(cond; next)), many of which internally use TCO

an enhanced form of reduce: foreach exp as $name (init_exp; update_exp; extract_exp)

the ability to read module data files

import "foo/bar" as $bar; # read foo/bar.json, bind to $bar::bar

--argjson var '<JSON text>'

Using --arg var bit me too many times :)

--slurpfile var "filename"

Replaces the --argfile form (which is now deprecated but remains for backward compatibility).

support for application/json-seq (RFC7464)

a large variety of new utility functions, many being community contributions (e.g., bsearch, for binary searching arrays)

datetime functions

a variety of performance enhancements

def($a): ...; is now allowed as an equivalent of def(a): a as $a | ...;

test and build improvements, including gcov support

Lastly, don't forget the wiki! The wiki has a lot of new content since 1.4, much of it contributed by the community.