-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Replace NEWS with NEWS.md with more details and examples
Changes mentioned based on picking user facing changes from: git log --oneline -r master...jq-1.6 | grep -v Merge
- Loading branch information
Showing
3 changed files
with
214 additions
and
114 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,213 @@ | ||
# 1.x | ||
|
||
TODO: | ||
- Word about new organization and repo move? | ||
- Docker images | ||
- scan/2 added | ||
- sub/3 fixes | ||
- validate module metadata is object | ||
- Fix number lexer to avoid conflict with object indexing (#2254) | ||
- lots of docs fixes | ||
|
||
Changes | ||
|
||
- Use decimal number literals to preserve precision. Comparison operations respects precision but arithmetic operations might truncate. #1752 @leonid-s-usov | ||
```sh | ||
# precision is preserved | ||
$ jq -n '100000000000000000' | ||
100000000000000000 | ||
# comparsion respects precision (this is false in JavaScript) | ||
$ jq -n '100000000000000000 < 100000000000000001' | ||
true | ||
# arithmetic operations might truncate (same as JavaScript) | ||
$ jq -n '100000000000000000+10' | ||
100000000000000020 | ||
``` | ||
- Allow `if` without `else`-branch. When skipped the `else`-branch will be `.` (identity). #1825 @chancez #2481 @wader | ||
```sh | ||
# convert 1 to "one" otherwise keep as is | ||
$ jq -n '1,2 | if . == 1 then "one" end' | ||
"one" | ||
2 | ||
# behaves the same as | ||
$ jq -n '1,2 | if . == 1 then "one" else . end' | ||
"one" | ||
2 | ||
# also works with elif | ||
$ jq -n '1,2,3 | if . == 1 then "one" elif . == 2 then "two" end | ||
"one" | ||
"two" | ||
3 | ||
``` | ||
- Allow use of `$binding` as key in object literals. 8ea4a55 @nicowilliams | ||
```sh | ||
$ jq -n '"a" as $key | {$key: 123}' | ||
{ | ||
"a": 123 | ||
} | ||
# previously parentheses were needed | ||
$ jq -n '"a" as $key | {($key): 123}' | ||
{ | ||
"a": 123 | ||
} | ||
``` | ||
- Last output value can now control exit code using `--exit-code`/`-e`. #1697 @ryo1kato | ||
```sh | ||
# true-ish last output value exits with zero | ||
$ jq -ne true ; echo $? | ||
true | ||
0 | ||
# false-ish last output value (false and null) exits with 1 | ||
$ jq -ne false ; echo $? | ||
false | ||
1 | ||
# no output value exists with 4 | ||
$ jq -ne empty ; echo $? | ||
4 | ||
``` | ||
- Allow dot between chained indexes when using `.["index"]` #1168 @nicowilliams | ||
```sh | ||
$ jq -n '{"a": {"b": 123}} | .a["b"]' | ||
123 | ||
# now this works also | ||
$ jq -n '{"a": {"b": 123}} | .a.["b"]' | ||
123 | ||
``` | ||
- Speed up and refactor some builtins, also remove `scalars_or_empty/0`. #1845 @muhmuhten | ||
- Add `--binary`/`-b` on Windows for binary output. To get `\n` instead of `\r\n` line endings. 0dab2b1 @nicowilliams | ||
- Add `--nul-output`/`-0` for null (zero byte) separated output. #1990 @pabs3, #2235 @asottile | ||
```sh | ||
# will output a zero byte after each output | ||
$ jq -n0 '1,2,3' | xxd | ||
00000000: 3100 3200 3300 1.2.3. | ||
# can be used with xargs -0 | ||
$ jq -n -0 '"a","b","c"' | xargs -0 -n1 | ||
a | ||
b | ||
c | ||
$ jq -n -0 '"a b c", "d\ne\nf"' | xargs -0 printf '%q\n' | ||
'a b c' | ||
'd'$'\n''e'$'\n''f' | ||
# can be used with read -d '' | ||
$ while IFS= read -r -d '' json; do | ||
> jq '.name' <<< "$json" | ||
> done < <(jq -n -0 '{name:"a b c"},{name:"d\ne\nf"}') | ||
"a b c" | ||
"d\ne\nf" | ||
``` | ||
- Fix issue converting string to number after previous convert error. #2400 @thalman | ||
# Previous releases | ||
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, etetera (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 | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters