jq Changelog

What's new in jq 1.5

Aug 17, 2015
  • regular expressions (with Oniguruma)
  • a library/module system
  • many new builtins:
  • datetime builtins
  • math builtins
  • regexp-related builtins
  • stream-related builtins (e.g., all/1, any/1)
  • minimal I/O builtins (`inputs`, `debug`)
  • new syntactic features, including:
  • destructuring (`. as [$first, $second] | ...`)
  • try/catch, generalized `?` operator, and label/break
  • `foreach`
  • multiple definitions of a function with different numbers of arguments
  • command-line arguments:
  • --join-lines / -j for raw output
  • --argjson and --slurpfile
  • --tab and --indent
  • --stream (streaming JSON parser)
  • --seq (RFC7464 JSON text sequence)
  • --run-tests improvements
  • optimizations:
  • tail-call optimization
  • reduce and foreach no longer leak a reference to .

New in jq 1.5 RC 1 (May 6, 2015)

  • Salient new features since 1.4:
  • regexp support (using Oniguruma)
  • an online streaming parser
  • try/catch, for catching and handling errors (this makes for a dynamic non-local exit system)
  • a lexical non-local exit system
  • 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))
  • an enhanced form of reduce: foreach exp as $name (init_exp; update_exp; extract_exp)
  • a proper module system
  • the ability to read module data files
  • --argjson var ''
  • --in-place / -i for in-place editing of files
  • support for application/json-seq.
  • a variety of new utility functions, many being community contributions
  • a variety of performance enhancements (e.g., constant folding)
  • def($a): ...; is now allowed as an equivalent of def(a): a as $a | ...;