Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
/jqPublic

Releases: jqlang/jq

jq 1.7.1

13 Dec 19:56
71c2ab5
This commit was created on GitHub.com and signed with GitHub’sverified signature. The key has expired.
GPG key ID:4AEE18F83AFDEB23
Expired
Verified
Learn about vigilant mode.
Compare
Choose a tag to compare
Loading

Security

  • CVE-2023-50246: Fix heap buffer overflow in jvp_literal_number_literal
  • CVE-2023-50268: fix stack-buffer-overflow if comparing nan with payload

CLI changes

Language changes

Documentation changes

libjq

Build and test changes

New Contributors

Full Changelog:jq-1.7...jq-1.7.1

Contributors

  • @jesperronn
  • @owenthereal
  • @wader
  • @itchyny
  • @nicowilliams
  • @DavidKorczynski
  • @tboz203
  • @taoky
  • @torsten-schenk
  • @leonid-s-usov
  • @Gaelan
  • @nabijaczleweli
  • @rockwotj
  • @yeikel
  • @mjarosie
  • @asheiduk
  • @kamontat
  • @emanuele6
  • @dependabot
  • @klemensn
jesperronn, owenthereal, and 18 other contributors
Assets29
Gitoffthelawn, i0tool5, tiawl, dsh2, NIXKnight, CharlesChiuGit, JonnyTech, srini-x, ysoftman, RichestHumanAlive, and 8 more reacted with thumbs up emojiwader, caarlos0, emanuele6, mundry, edgarrmondragon, generalmimon, mathewpeterson, itchyny, gmeligio, eitsupi, and 22 more reacted with hooray emojiGitoffthelawn, dsh2, srini-x, mevinod, shahzaib086, 0xdnL, haowang-bioinfo, and KellySoares reacted with heart emojiluncliff, libreom, TheBestTvarynka, and srini-x reacted with eyes emoji
51 people reacted

jq 1.7

06 Sep 22:54
Compare
Choose a tag to compare
Loading

After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release. We're very grateful for all the new owners, admins, and maintainers. Special thanks go to Owen Ou (@owenthereal) for pushing to set up a new GitHub organization for jq, Stephen Dolan (@stedolan) for transferring the jq repository to the new organization,@itchyny for doing a great deal of work to get the release done, Mattias Wadman (@wader) and Emanuele Torre (@emanuele6) for many PRs and code reviews. Many others also contributed PRs, issues, and code reviews as well, and you can find their contributions in the Git log and on theclosed issues and PRs page.

What's Changed

Since the last stable release many things have happened:

  • jq now lives athttps://github.com/jqlang
  • New maintainers, admins, and owners have been recruited.
  • NEWS file is replaced by NEWS.md with Markdown format.@wader#2599
  • CI, scan builds, release, website builds etc now use GitHub actions.@owenthereal@wader@itchyny#2596#2603#2620#2723
  • Lots of documentation improvements and fixes.
  • Website updated with new section search box, better section ids for linking, dark mode, etc.@itchyny#2628
  • Release builds for:
    • Linuxamd64,arm64,armel,armhf,i386,mips,mips64,mips64el,mips64r6,mips64r6el,mipsel,mipsr6,mipsr6el,powerpc,ppc64el,riscv64 ands390x
    • macOSamd64 andarm64
    • Windowsi386 andamd64
    • Dockerlinux/386,linux/amd64,linux/arm64,linux/mips64le,linux/ppc64le,linux/riscv64 andlinux/s390x
    • More details see@owenthereal#2665
  • Docker images are now available fromghcr.io/jqlang/jq instead of Docker Hub.@itchyny#2652#2686
  • OSS-fuzz.@DavidKorczynski#2760#2762

Full commit log can be found atjq-1.6...jq-1.7 but here are some highlights:

CLI changes

  • Make object key color configurable usingJQ_COLORS environment variable.@itchyny@haguenau@ericpruitt#2703

    # this would make "field" bold yellow (`1;33`, the last value)$ JQ_COLORS="0;90:0;37:0;37:0;37:0;32:1;37:1;37:1;33" ./jq -n'{field: 123}'{"field": 123}
  • Change the default color of null to Bright Black.@itchyny#2824

  • RespectNO_COLOR environment variable to disable color output. Seehttps://no-color.org for details.@itchyny#2728

  • Improved--help output. Now mentions all options and nicer order.@itchyny@wader#2747#2766#2799

  • Fix multiple issues of exit code using--exit-code/-e option.@ryo1kato#1697

    # true-ish last output value exits with zero$ jq -netrue;echo$?true0# false-ish last output value (false and null) exits with 1$ jq -nefalse;echo$?false1# no output value exists with 4$ jq -ne empty;echo$?4
  • Add--binary/-b on Windows for binary output. To get\n instead of\r\n line endings.@nicowilliams0dab2b1

  • Add--raw-output0 for NUL (zero byte) separated output.@asottile@pabs3@itchyny#1990#2235#2684

    # will output a zero byte after each output$ jq -n --raw-output0'1,2,3'| xxd00000000: 3100 3200 3300                           1.2.3.# can be used with xargs -0$ jq -n --raw-output0'"a","b","c"'| xargs -0 -n1abc$ jq -n --raw-output0'"a b c", "d\ne\nf"'| xargs -0printf'[%s]\n'[a b c][def]# can be used with read -d ''$while IFS=read -r -d'' json;do>   jq'.name'<<<"$json">done<<(jq -n --raw-output0'{name:"a b c"},{name:"d\ne\nf"}')"a b c""d\ne\nf"# also it's an error to output a string containing a NUL when using NUL separator$ jq -n --raw-output0'"\u0000"'jq: error (at<unknown>): Cannot dump a string containing NUL with --raw-output0 option
  • Fix assert crash and validate JSON for--jsonarg.@wader#2658

  • Remove deprecated--argfile option.@itchyny#2768

  • Enable stack protection.@nicowilliams#2801

Language changes

  • Use decimal number literals to preserve precision. Comparison operations respects precision but arithmetic operations might truncate.@leonid-s-usov#1752

    # precision is preserved$echo'100000000000000000'| jq.100000000000000000# comparison respects precision (this is false in JavaScript)$ jq -n'100000000000000000 < 100000000000000001'true# sort/0 works$ jq -n -c'[100000000000000001, 100000000000000003, 100000000000000004, 100000000000000002] | sort'[100000000000000001,100000000000000002,100000000000000003,100000000000000004]# arithmetic operations might truncate (same as JavaScript)$ jq -n'100000000000000000 + 10'100000000000000020
  • Adds new builtinpick(stream) to emit a projection of the input object or array.@pkoppstein#2656#2779

    $ jq -n'{"a": 1, "b": {"c": 2, "d": 3}, "e": 4} | pick(.a, .b.c, .x)'{"a": 1,"b": {"c": 2  },"x": null}
  • Adds new builtindebug(msgs) that works likedebug but applies a filter on the input before writing to stderr.@pkoppstein#2710

    $ jq -n'1 as $x | 2 | debug("Entering function foo with $x == \($x)", .) | (.+1)'["DEBUG:","Entering function foo with$x == 1"]["DEBUG:",2]3$ jq -n'{a: 1, b: 2, c: 3} | debug({a, b, sum: (.a+.b)})'["DEBUG:",{"a":1,"b":2,"sum":3}]{"a": 1,"b": 2,"c": 3}
  • Adds new builtinscan($re; $flags). Was documented but not implemented.@itchyny#1961

    # look for pattern "ab" in "abAB" ignoring casing$ jq -n'"abAB" | scan("ab"; "i")'"ab""AB"
  • Adds new builtinabs to get absolute value. This potentially allows the literal value of numbers to be preserved aslength andfabs convert to float.@pkoppstein#2767

  • Allowif withoutelse-branch. When skipped theelse-branch will be. (identity).@chancez@wader#1825#2481

    # 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.@nicowilliams8ea4a55

    $ jq -n'"a" as $key | {$key: 123}'{"a": 123}# previously parentheses were needed$ jq -n'"a" as $key | {($key): 123}'{"a": 123}
  • Allow dot between chained indexes when using.["index"]@nicowilliams#1168

    $ jq -n'{"a": {"b": 123}} | .a["b"]'123# now this also works$ jq -n'{"a": {"b": 123}} | .a.["b"]'123
  • Allow dot for chained value iterator.[],.[]?@wader#2650

    $ jq -n'{"a": [123]} | .a[]'123# now this also works$ jq -n'{"a": [123]} | .a.[]'123
  • Fix try/catch catches more than it should.@nicowilliams#2750

  • Speed up and refactor some builtins, also removescalars_or_empty/0.@muhmuhten#1845

  • Nowhalt andhalt_error exit immediately instead of continuing to the next input.@emanuele6#2667

  • Fix issue converting string to number after previous convert error.@thalman#2400

  • Fix issue representing large numbers on some platforms causing invalid JSON output.@itchyny#2661

  • Fix deletion using assigning empty against arrays.@itchyny#2133

    # now this works as expected, filter out all values over 2 by assigning empty$ jq -c'(.[] | select(. >= 2)) |= empty'<<<'[1,5,3,0,7]'[1,0]
  • Allow keywords to be used as binding name in more places.@emanuele6#2681

  • Allow usingnan as NaN in JSON.@emanuele6#2712

  • Expose a module's function names inmodulemeta.@mrwilson#2837

  • Fixcontains/1 to handle strings with NUL.@nicowilliams61cd6db

  • Fixstderr/0 to output raw text without any decoration.@itchyny#2751

  • Fixnth/2 to emit empty on index out of range.@itchyny#2674

  • Fiximplode to not assert and instead replace invalid unicode codepoints.@wader#2646

  • Fixindices/1 andrindex/1 in case of overlapping matches in strings.@emanuele6#2718

  • Fixsub/3 to resolve issues involving global search-and-replace (gsub) operations.@pkoppstein#2641

  • Fixsignificand/0,gamma/0 anddrem/2 to be available on macOS.@itchyny#2756#2775

  • Fix empty regular expression matches.@itchyny#2677

  • Fix overflow exception of the modulo operator.@itchyny#2629

  • Fix string multiplication by 0 (and less than 1) to emit empty string.@itchyny#2142

  • Fix segfault when using libjq and threads.@thalman#2546

  • Fix constant folding of division and reminder with zero divisor.@itchyny#2797

  • Fixerror/0,error/1 to throw null error.@emanuele6#2823

  • Simpler and fastertranspose.@pkoppstein#2758

  • Simple and efficient implementation ofwalk/1.@pkoppstein#2795

  • Remove deprecated filtersleaf_paths,recurse_down.@itchyny#2666

Full Changelog:jq-1.7rc2...jq-1.7

Contributors

  • @stedolan
  • @owenthereal
  • @pkoppstein
  • @wader
  • @ryo1kato
  • @pabs3
  • @itchyny
  • @mrwilson
  • @ericpruitt
  • @nicowilliams
  • @DavidKorczynski
  • @thalman
  • @chancez
  • @asottile
  • @haguenau
  • @leonid-s-usov
  • @muhmuhten
  • @emanuele6
stedolan, owenthereal, and 16 other contributors
Loading
shikil, zulhfreelancer, b0o, aarongoldenthal, EricCrosson, fanweixiao, OneCDOnly, darcyclarke, m-graf, kylepollina, and 116 more reacted with thumbs up emojieitsupi, danielhoherd, svercl, mjsteinbaugh, nikolay, CharlesChiuGit, bobhigs, snahor, zulhfreelancer, b0o, and 206 more reacted with hooray emojisonic2kk, mlbright, snahor, zulhfreelancer, b0o, EricCrosson, sentriz, rvcas, libreom, 9mdv, and 98 more reacted with heart emojiAjayKMehta, danielhoherd, wader, sonic2kk, theblackturtle, PedroHLC, zulhfreelancer, b0o, EricCrosson, libreom, and 68 more reacted with rocket emojimrusme, corneliusroemer, eckoblack, igorbrites, Gitoffthelawn, kyoya-de, kashw2, olorin37, as23751782, and yyffddys reacted with eyes emoji
356 people reacted

jq 1.7rc2

27 Aug 18:10
Compare
Choose a tag to compare
Loading
jq 1.7rc2Pre-release
Pre-release

Note that this is a pre-release. Feedback is welcome#2862.


After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release.

Since the last stable release many things have happened:

  • jq now lives athttps://github.com/jqlang
  • New maintainers, admins, and owners have been recruited.
  • NEWS file is replaced by NEWS.md with Markdown format.@wader#2599
  • CI, scan builds, release, website builds etc now use GitHub actions.@owenthereal@wader@itchyny#2596#2603#2620#2723
  • Lots of documentation improvements and fixes.
  • Website updated with new section search box, better section ids for linking, dark mode, etc.@itchyny#2628
  • Release builds for:
    • Linuxamd64,arm64,armel,armhf,i386,mips,mips64,mips64el,mips64r6,mips64r6el,mipsel,mipsr6,mipsr6el,powerpc,ppc64el,riscv64 ands390x
    • macOSamd64 andarm64
    • Windowsi386 andamd64
    • Dockerlinux/386,linux/amd64,linux/arm64,linux/mips64le,linux/ppc64le,linux/riscv64 andlinux/s390x
    • More details see@owenthereal#2665
  • Docker images are now available fromghcr.io/jqlang/jq instead of Docker Hub.@itchyny#2652#2686
  • OSS-fuzz.@DavidKorczynski#2760#2762

Full commit log can be found atjq-1.6...jq-1.7rc2 but here are some highlights:

CLI changes

  • Make object key color configurable usingJQ_COLORS environment variable.@itchyny@haguenau@ericpruitt#2703

    # this would make "field" bold yellow (`1;33`, the last value)$ JQ_COLORS="0;90:0;37:0;37:0;37:0;32:1;37:1;37:1;33" ./jq -n'{field: 123}'{"field": 123}
  • Change the default color of null to Bright Black.@itchyny#2824

  • RespectNO_COLOR environment variable to disable color output. Seehttps://no-color.org for details.@itchyny#2728

  • Improved--help output. Now mentions all options and nicer order.@itchyny@wader#2747#2766#2799

  • Fix multiple issues of exit code using--exit-code/-e option.@ryo1kato#1697

    # true-ish last output value exits with zero$ jq -netrue;echo$?true0# false-ish last output value (false and null) exits with 1$ jq -nefalse;echo$?false1# no output value exists with 4$ jq -ne empty;echo$?4
  • Add--binary/-b on Windows for binary output. To get\n instead of\r\n line endings.@nicowilliams0dab2b1

  • Add--raw-output0 for NUL (zero byte) separated output.@asottile@pabs3@itchyny#1990#2235#2684

    # will output a zero byte after each output$ jq -n --raw-output0'1,2,3'| xxd00000000: 3100 3200 3300                           1.2.3.# can be used with xargs -0$ jq -n --raw-output0'"a","b","c"'| xargs -0 -n1abc$ jq -n --raw-output0'"a b c", "d\ne\nf"'| xargs -0printf'[%s]\n'[a b c][def]# can be used with read -d ''$while IFS=read -r -d'' json;do>   jq'.name'<<<"$json">done<<(jq -n --raw-output0'{name:"a b c"},{name:"d\ne\nf"}')"a b c""d\ne\nf"# also it's an error to output a string containing a NUL when using NUL separator$ jq -n --raw-output0'"\u0000"'jq: error (at<unknown>): Cannot dump a string containing NUL with --raw-output0 option
  • Fix assert crash and validate JSON for--jsonarg.@wader#2658

  • Remove deprecated--argfile option.@itchyny#2768

  • Enable stack protection.@nicowilliams#2801

Language changes

  • Use decimal number literals to preserve precision. Comparison operations respects precision but arithmetic operations might truncate.@leonid-s-usov#1752

    # precision is preserved$echo'100000000000000000'| jq.100000000000000000# comparison respects precision (this is false in JavaScript)$ jq -n'100000000000000000 < 100000000000000001'true# sort/0 works$ jq -n -c'[100000000000000001, 100000000000000003, 100000000000000004, 100000000000000002] | sort'[100000000000000001,100000000000000002,100000000000000003,100000000000000004]# arithmetic operations might truncate (same as JavaScript)$ jq -n'100000000000000000 + 10'100000000000000020
  • Adds new builtinpick(stream) to emit a projection of the input object or array.@pkoppstein#2656#2779

    $ jq -n'{"a": 1, "b": {"c": 2, "d": 3}, "e": 4} | pick(.a, .b.c, .x)'{"a": 1,"b": {"c": 2  },"x": null}
  • Adds new builtindebug(msgs) that works likedebug but applies a filter on the input before writing to stderr.@pkoppstein#2710

    $ jq -n'1 as $x | 2 | debug("Entering function foo with $x == \($x)", .) | (.+1)'["DEBUG:","Entering function foo with$x == 1"]["DEBUG:",2]3$ jq -n'{a: 1, b: 2, c: 3} | debug({a, b, sum: (.a+.b)})'["DEBUG:",{"a":1,"b":2,"sum":3}]{"a": 1,"b": 2,"c": 3}
  • Adds new builtinscan($re; $flags). Was documented but not implemented.@itchyny#1961

    # look for pattern "ab" in "abAB" ignoring casing$ jq -n'"abAB" | scan("ab"; "i")'"ab""AB"
  • Adds new builtinabs to get absolute value. This potentially allows the literal value of numbers to be preserved aslength andfabs convert to float.@pkoppstein#2767

  • Allowif withoutelse-branch. When skipped theelse-branch will be. (identity).@chancez@wader#1825#2481

    # 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.@nicowilliams8ea4a55

    $ jq -n'"a" as $key | {$key: 123}'{"a": 123}# previously parentheses were needed$ jq -n'"a" as $key | {($key): 123}'{"a": 123}
  • Allow dot between chained indexes when using.["index"]@nicowilliams#1168

    $ jq -n'{"a": {"b": 123}} | .a["b"]'123# now this also works$ jq -n'{"a": {"b": 123}} | .a.["b"]'123
  • Allow dot for chained value iterator.[],.[]?@wader#2650

    $ jq -n'{"a": [123]} | .a[]'123# now this also works$ jq -n'{"a": [123]} | .a.[]'123
  • Fix try/catch catches more than it should.@nicowilliams#2750

  • Speed up and refactor some builtins, also removescalars_or_empty/0.@muhmuhten#1845

  • Nowhalt andhalt_error exit immediately instead of continuing to the next input.@emanuele6#2667

  • Fix issue converting string to number after previous convert error.@thalman#2400

  • Fix issue representing large numbers on some platforms causing invalid JSON output.@itchyny#2661

  • Fix deletion using assigning empty against arrays.@itchyny#2133

    # now this works as expected, filter out all values over 2 by assigning empty$ jq -c'(.[] | select(. >= 2)) |= empty'<<<'[1,5,3,0,7]'[1,0]
  • Allow keywords to be used as binding name in more places.@emanuele6#2681

  • Allow usingnan as NaN in JSON.@emanuele6#2712

  • Expose a module's function names inmodulemeta.@mrwilson#2837

  • Fixcontains/1 to handle strings with NUL.@nicowilliams61cd6db

  • Fixstderr/0 to output raw text without any decoration.@itchyny#2751

  • Fixnth/2 to emit empty on index out of range.@itchyny#2674

  • Fiximplode to not assert and instead replace invalid unicode codepoints.@wader#2646

  • Fixindices/1 andrindex/1 in case of overlapping matches in strings.@emanuele6#2718

  • Fixsub/3 to resolve issues involving global search-and-replace (gsub) operations.@pkoppstein#2641

  • Fixsignificand/0,gamma/0 anddrem/2 to be available on macOS.@itchyny#2756#2775

  • Fix empty regular expression matches.@itchyny#2677

  • Fix overflow exception of the modulo operator.@itchyny#2629

  • Fix string multiplication by 0 (and less than 1) to emit empty string.@itchyny#2142

  • Fix segfault when using libjq and threads.@thalman#2546

  • Fix constant folding of division and reminder with zero divisor.@itchyny#2797

  • Fixerror/0,error/1 to throw null error.@emanuele6#2823

  • Simpler and fastertranspose.@pkoppstein#2758

  • Simple and efficient implementation ofwalk/1.@pkoppstein#2795

  • Remove deprecated filtersleaf_paths,recurse_down.@itchyny#2666

Contributors

  • @owenthereal
  • @pkoppstein
  • @wader
  • @ryo1kato
  • @pabs3
  • @itchyny
  • @mrwilson
  • @ericpruitt
  • @nicowilliams
  • @DavidKorczynski
  • @thalman
  • @chancez
  • @asottile
  • @haguenau
  • @leonid-s-usov
  • @muhmuhten
  • @emanuele6
owenthereal, pkoppstein, and 15 other contributors
Loading
mundry, ElSamhaa, OneCDOnly, bztoy, hashqueue, drewbitt, Jackson-soft, sidvishnoi, jtagcat, libreom, and 8 more reacted with thumbs up emojipothi, micro-o, thushan, dvergeylen, followingell, gregalia, aikow, i0tool5, nezda, Gitoffthelawn, and mfdj reacted with hooray emojisimonneutert, mfdj, i0tool5, and Gitoffthelawn reacted with heart emojiwader, ElSamhaa, chromer030, mfdj, eitsupi, owenthereal, crides, serjflint, jxu, and i0tool5 reacted with rocket emoji
33 people reacted

jq 1.7rc1

31 Jul 23:04
Compare
Choose a tag to compare
Loading
jq 1.7rc1Pre-release
Pre-release

Note that this is a pre-release. Feedback is welcome#2802.


After a five year hiatus we're back with a GitHub organization, with new admins and new maintainers who have brought a great deal of energy to make a long-awaited and long-needed new release.

Since the last stable release many things have happened:

  • jq now lives athttps://github.com/jqlang
  • New maintainers, admins, and owners have been recruited.
  • CI, scan builds, release builds etc now use GitHub actions.@owenthereal#2596#2620
  • Lots of documentation improvements and fixes.
  • Web site updated with new auto complete, better section ids for linking, dark mode, etc.@itchyny#2628
  • Release builds for:
    • Linuxamd64,arm64,armel,armhf,i386,mips,mips64,mips64el,mips64r6,mips64r6el,mipsel,mipsr6,mipsr6el,powerpc,ppc64el,riscv64 ands390x
    • macOSamd64 andarm64
    • Windowsi386 andamd64
    • Dockerlinux/386,linux/amd64,linux/arm64,linux/mips64le,linux/ppc64le,linux/riscv64 andlinux/s390x
    • More details see@owenthereal#2665
  • Docker images are now available fromghcr.io/jqlang/jq instead of docker hub.@itchyny#2652
  • OSS-fuzz.@DavidKorczynski#2760#2762

Full commit log can be found atjq-1.6...jq-1.7rc1 but here are some highlights:

CLI changes

  • Make object key color configurable usingJQ_COLORS environment variable.@itchyny@haguenau@ericpruitt#2703

    # this would make "field" yellow (33, the last value)$ JQ_COLORS="1;30:0;37:0;37:0;37:0;32:1;37:1;37:1;33" ./jq -n'{field: 123}'{"field": 123}
  • RespectNO_COLOR environment variable to disable color output. Seehttps://no-color.org for details.@itchyny#2728

  • Improved--help output. Now mentions all options and nicer order.@itchyny#2747#2766

  • Last output value can now control exit code using--exit-code/-e.@ryo1kato#1697

    # true-ish last output value exits with zero$ jq -netrue;echo$?true0# false-ish last output value (false and null) exits with 1$ jq -nefalse;echo$?false1# no output value exists with 4$ jq -ne empty;echo$?4
  • Add--binary/-b on Windows for binary output. To get\n instead of\r\n line endings.0dab2b1@nicowilliams

  • Add--raw-output0 for NUL (zero byte) separated output.@asottile@pabs3@itchyny#1990#2235#2684

    # will output a zero byte after each output$ jq -n --raw-output0'1,2,3'| xxd00000000: 3100 3200 3300                           1.2.3.# can be used with xargs -0$ jq -n --raw-output0'"a","b","c"'| xargs -0 -n1abc$ jq -n --raw-output0'"a b c", "d\ne\nf"'| xargs -0printf'%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 --raw-output0'{name:"a b c"},{name:"d\ne\nf"}')"a b c""d\ne\nf"# also it's an error to output a string containing a NUL when using NUL separator$ jq -n --raw-output0'"\u0000"'jq: error (at<unknown>): Cannot dump a string containing NUL with --raw-output0 option
  • Fix assert crash and validate JSON for--jsonarg.@wader#2658

  • Remove deprecated--argfile option.@itchyny#2768

Language changes

  • Use decimal number literals to preserve precision. Comparison operations respects precision but arithmetic operations might truncate.@leonid-s-usov#1752

    # precision is preserved$ jq -n'100000000000000000'100000000000000000# comparison respects precision (this is false in JavaScript)$ jq -n'100000000000000000 < 100000000000000001'true# arithmetic operations might truncate (same as JavaScript)$ jq -n'100000000000000000+10'100000000000000020
  • Adds new builtinpick(stream) to emit a projection of the input object or array.@pkoppstein#2656

    $ jq -n'{"a": 1, "b": {"c": 2, "d": 3}, "e": 4} | pick(.a, .b.c, .x)'{"a": 1,"b": {"c": 2  },"x": null}
  • Adds new builtindebug(msgs) that works likedebug but applies a filter on the input before writing to stderr.@pkoppstein#2710

    $ jq -n'1 as $x | 2 | debug("Entering function foo with $x == \($x)", .) | (.+1)'["DEBUG:","Entering function foo with$x == 1"]["DEBUG:",2]3$ jq -n'{a: 1, b: 2, c: 3} | debug({a, b, sum: (.a+.b)})'["DEBUG:",{"a":1,"b":2,"sum":3}]{"a": 1,"b": 2,"c": 3}
  • Adds new builtinscan($re; $flags). Was documented but not implemented.@itchyny#1961

    # look for pattern "ab" in "abAB" ignoring casing$ jq -n'"abAB" | scan("ab"; "i")'"ab""AB"
  • Adds new builtinabs to get absolute value. This potentially allows the literal value of numbers to be preserved aslength andfabs convert to float.@pkoppstein#2767

  • Allowif withoutelse-branch. When skipped theelse-branch will be. (identity).@chancez@wader#1825#2481

    # 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

    $ jq -n'"a" as $key | {$key: 123}'{"a": 123}# previously parentheses were needed$ jq -n'"a" as $key | {($key): 123}'{"a": 123}
  • Allow dot between chained indexes when using.["index"]@nicowilliams#1168

    $ jq -n'{"a": {"b": 123}} | .a["b"]'123# now this works also$ jq -n'{"a": {"b": 123}} | .a.["b"]'123
  • Fix try/catch catches more than it should.@nicowilliams#2750

  • Speed up and refactor some builtins, also removescalars_or_empty/0.@muhmuhten#1845

  • Nowhalt andhalt_error exit immediately instead of continuing to the next input.@emanuele6#2667

  • Fix issue converting string to number after previous convert error.@thalman#2400

  • Make 0 divided by 0 result in NaN consistently.@itchyny#2253

  • Fix issue representing large numbers on some platforms causing invalid JSON output.@itchyny#2661

  • Fix deletion using assigning empty against arrays.@itchyny#2133

    # now this works as expected, filter out all values over 2 by assigning empty$ jq -c'(.[] | select(. >= 2)) |= empty'<<<'[1,5,3,0,7]'[1,0]
  • Fixstderr/0 to output raw text without any decoration.@itchyny#2751

  • Fixnth/2 to emit empty on index out of range.@itchyny#2674

  • Fiximplode to not assert and instead replace invalid unicode codepoints.@wader#2646

  • Simpler and fastertranspose.@pkoppstein#2758

  • Allow keywords to be used as binding name in more places.@emanuele6#2681

  • Allow usingnan as NaN in JSON.@emanuele6#2712

  • Fix indices/1 and rindex/1 in case of overlapping matches in strings.@emanuele6#2718

  • Enablesignificand/0,gamma/0 anddrem/2 on macOS.@itchyny#2756#2775

  • Fix segfault when using libjq and threads.@thalman#2546

Contributors

  • @owenthereal
  • @pkoppstein
  • @wader
  • @ryo1kato
  • @pabs3
  • @itchyny
  • @ericpruitt
  • @nicowilliams
  • @DavidKorczynski
  • @thalman
  • @chancez
  • @asottile
  • @haguenau
  • @leonid-s-usov
  • @muhmuhten
  • @emanuele6
owenthereal, pkoppstein, and 14 other contributors
Loading
joshsleeper, hashqueue, xPMo, FullByte, oldratlee, libreom, andr-ll, darrik, W4lspirit, RicoToothless, and 22 more reacted with thumbs up emojianonymous1184, owenthereal, wader, SpecLad, frankpengau, emanuele6, CathalMullan, thrau, eitsupi, DrJume, and 60 more reacted with hooray emojiHrxn, sudame, DrJume, joshsleeper, zQueal, rassvet2, deric4, zaporter-work, Checksum, bartekpacia, and 25 more reacted with heart emojiHrxn, emanuele6, xPMo, kamilsk, libreom, gskoljarev, MindTooth, simonneutert, RicoToothless, greenhat, and 14 more reacted with rocket emoji
108 people reacted

jq 1.6

02 Nov 01:54
Compare
Choose a tag to compare
Loading

New in this release 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
  • AddJQ_COLORS env var for configuring the output colors

Bug fixes:

  • Callingjq without 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=builtin option to make it easier to build with oniguruma support on systems where you can't install system-level libraries. (c6374b6 and02bad4b)
  • And much more!
Loading
Molkree, bmarwell, bastelpingu, M3TIOR, ashermancinelli, mudit31, babunoel, ascmove, danielmoraless, kinfinity, and 42 more reacted with thumbs up emojiavoidik, harihkh, seanogor, mebble, bczhc, esthon, bl-ue, nanmu42, Familyfirst4, mirekphd, and 12 more reacted with heart emojiascmove, harihkh, davorpa, seanogor, N9o4455, bczhc, bl-ue, XenonPK, mirekphd, gchudnov, and 2 more reacted with rocket emoji
66 people reacted

jq 1.5

16 Aug 06:39
Compare
Choose a tag to compare
Loading

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 athttps://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::* namespace

    and

    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 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 ofreduce: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 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.

Loading

jq 1.5 release candidate 2

27 Jul 04:14
Compare
Choose a tag to compare
Loading
Pre-release

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::* namespace

    and

    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 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 ofreduce: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 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.

Loading

1.5 release candidate 1

01 Jan 02:54
Compare
Choose a tag to compare
Loading
Pre-release

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 newinput andinputs builtins.

    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 ofreduce: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 /-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 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.

Loading

jq 1.4

08 Aug 05:00
Compare
Choose a tag to compare
Loading

The manual for jq 1.4 can be found athttps://stedolan.github.io/jq/manual/v1.4/

Loading

jq 1.3

08 Aug 05:03
Compare
Choose a tag to compare
Loading

The manual for jq 1.3 can be found athttps://stedolan.github.io/jq/manual/v1.3/

Loading
Previous1
Previous

[8]ページ先頭

©2009-2025 Movatter.jp