Skip to content

jq 1.5

Choose a tag to compare
@nicowilliams nicowilliams released this 16 Aug 06:39
· 435 commits to master since this release

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

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


    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

  • 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.