
Release history

 * jq version 1.6 was released on Fri Nov 2 2018
 * jq version 1.5 was released on Sat Aug 15 2015
 * jq version 1.4 was released on Mon Jun 9 2014
 * jq version 1.3 was released on Sun May 19 2013
 * jq version 1.2 was released on Thu Dec 20 2012
 * jq version 1.1 was released on Sun Oct 21 2012
 * jq version 1.0 was released on Sun Oct 21 2012

New features in 1.6 since 1.5:

 - Destructuring Alternation

 - New Builtins:
   - builtins/0
   - stderr/0
   - halt/0, halt_error/1
   - isempty/1
   - walk/1
   - utf8bytelength/1
   - localtime/0, strflocaltime/1
   - SQL-style builtins
   - and more!

 - Add support for ASAN and UBSAN

 - Make it easier to use jq with shebangs (8f6f28c)

 - Add $ENV builtin variable to access environment

 - Add JQ_COLORS env var for configuring the output colors

New features in 1.5 since 1.4:

 - 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 features in 1.4 since 1.3:

 - command-line arguments

    - jq --arg-file variable file
    - jq --unbuffered
    - jq -e / --exit-status (set exit status based on outputs)
    - jq -S / --sort-keys (now jq no longer sorts object keys by
      default

 - syntax

    - .. -> like // in XPath (recursive traversal)
    - question mark (e.g., .a?) to suppress errors
    - ."foo" syntax (equivalent to .["foo"])
    - better error handling for .foo
    - added % operator (modulo)
    - allow negation without requiring extra parenthesis
    - more function arguments (up to six)

 - filters:

    - any, all
    - iterables, arrays, objects, scalars, nulls, booleans, numbers,
      strings, values

 - string built-ins:

    - split
    - join (join an array of strings with a given separator string)
    - ltrimstr, rtrimstr
    - startswith, endswith
    - explode, implode
    - fromjson, tojson
    - index, rindex, indices

 - math functions

    - floor, sqrt, cbrt, etcetera (depends on what's available from libm)

 - libjq -- a C API interface to jq's JSON representation and for
   running jq programs from C applications

