wtlangford
released this
New in this release since 1.5:
- Destructuring Alternation
- New Builtins:
builtins/0stderr/0halt/0, halt_error/1isempty/1walk/1utf8bytelength/1localtime/0, strflocaltime/1- SQL-style builtins
- and more!
- Add support for ASAN and UBSAN
- Make it easier to use jq with shebangs (8f6f28c)
- Add
$ENVbuiltin variable to access environment - Add
JQ_COLORSenv var for configuring the output colors
Bug fixes:
- Calling
jqwithout a program argument now always assumes.for the program, regardless of stdin/stdout. (5fe0536) - Make sorting stable regardless of qsort. (7835a72)
- Adds a local oniguruma submodule and the
./configure --with-oniguruma=builtinoption to make it easier to build with oniguruma support on systems where you can't install system-level libraries. (c6374b6 and 02bad4b) - And much more!
Assets
9
nicowilliams
released this
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::* namespaceand
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 $foowhere the break causes control to return to the label $foo, which
then producesempty(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
--argfileform (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 ofdef(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.
Assets
10
nicowilliams
released this
Thanks to the 20+ developers who have sent us PRs since 1.4, and the many contributors to issues and the wiki. We're nearing a 1.5 release, finally.
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::* namespaceand
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 $foowhere the break causes control to return to the label $foo, which
then producesempty(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
--argfileform (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 ofdef(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.
Assets
9
nicowilliams
released this
Salient new features since 1.4:
-
regexp support (using Oniguruma)
-
an online streaming parser
Included is the ability to control reading of inputs from the jq
program, using the newinputandinputsbuiltins.Finally we can write:
jq -n 'reduce inputs as $i ( ... )' # reduce online!
to reduce inputs without slurping 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
Using try/catch to break out of control structures was not a good
thing. A lexical mechanism is.You can now say
label $foo | ..... | break $foo
where the break causes control to return to the label $foo, which
then producesempty(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)) -
an enhanced form of
reduce:foreach exp as $name (init_exp; update_exp; extract_exp) -
a proper module system
import "foo/bar" as bar; # import foo/bar.jq's defs into a bar::* namespace
-
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 :)
-
--in-place/-ifor 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 ofdef(a): a as $a | ...;
Lastly, don't forget the wiki! It has a lot of new content since 1.4, much of it contributed by the community.
Assets
7
The manual for jq 1.4 can be found at https://stedolan.github.io/jq/manual/v1.4/
Assets
11
The manual for jq 1.3 can be found at https://stedolan.github.io/jq/manual/v1.3/
Assets
8
jq 1.2
Assets
2
jq 1.1

