jq 1.8.0をリリースしました。 github.com
前回のアップデート記事はこちら。 itchyny.hatenablog.com
変更の詳細はリリースノートに譲るとして、推しの新機能や修正を紹介します。
jqのクエリが間違っている時に、どこが問題なのかわからないというのはよくあることです。 今回のリリースで、エラーが起きている場所がわかりやすくなりました。
$ jq -n '1 + $foo + 2' jq: error: $foo is not defined at <top-level>, line 1, column 5: 1 + $foo + 2 ^^^^ jq: 1 compile error
エラーの位置がわかりやすいのはとても便利ですね。
jqでは、asキーワードを使って値を変数に束縛できます。
しかし、その結合が演算子よりも強く、以下のようなクエリで直感的でない挙動をしていました。
今回のリリースで、asキーワードの結合を修正し、より分かりやすい挙動に変更しました。
$ jq -nc '[-1 as $x | 1,$x]' [1,-1] # これまでは [-1,-1] $ jq -nc '1 | . + 2 as $x | -$x' -3 # これまでは -1
この修正はだいぶ前に自分が書いて放置されていたのですが、最近になってようやくマージできました。 変数束縛を使っている場合は、既存の結合に依存していないかご注意ください。
jqはJQ_COLORS環境変数を使って、出力の色を設定できますが、短いANSIシーケンスしか設定できませんでした。
今回のリリースで、JQ_COLORS環境変数にtruecolorのように長い色の指定を設定できるようになりました。
export JQ_COLORS="38;2;255;173;173:38;2;255;214;165:38;2;253;255;182:38;2;202;255;191:38;2;155;246;255:38;2;160;196;255:38;2;189;178;255:38;2;255;198;255" jq -nc '[null,false,true,42,{"a":"bc"}]'
綺麗ですね。
ぜひ推しの配色を設定してみてください。
まだ紹介したい機能や修正はありますが、全部紹介していると長くなりすぎるのでここまでにして、あとはリリースノートをご参照ください。 重大な脆弱性の修正も含まれていますので、jqを使っている方はぜひアップデートをお願いします。