1 июня, после почти полутора лет разработки, состоялся выпуск 1.8.0 библиотеки и консольной утилиты jq, предназначенных для обработки данных в формате JSON с использованием встроенного сверхвысокоуровневого функционального языка программирования. Код проекта написан на языке Си и распространяется по лицензии MIT.
Для регулярных выражений опционально может использоваться библиотека Oniguruma.
Начиная с этого выпуска, шаблон нумерации версий изменён на X.Y.Z
.
Исправления ошибок безопасности:
- CVE-2024-23337: исправлено целочисленное переполнение в функциях
jvp_array_write
иjvp_object_rehash
. Теперь максимальный размер массивов и объектов установлен в 536870912 (2^29) элементов. - CVE-2024-53427: исправлен парсинг значений вида
NaNчисло
, напримерNaN1
,NaN10
и т. п. Другие расширения JSON (подобныеNaN
,Infinity
) остаются поддерживаемыми. - CVE-2025-48060: исправлено переполнение буфера в функции
jv_string_vfmt
. - Исправлено использование неинициализированного значения в функции
check_literal
- Исправлено падение в функциях
strftime
иstrflocaltime
. - Исправлено необработанное целочисленное переполнение в функции
@base64d
.
Изменения в консольной утилите:
- Исправлено поведение ключа
--indent 0
, ранее неявно включавшего режим--compact-output
. - Улучшены сообщения об ошибках парсинга.
- Улучшена обработка длинных значений переменной среды
JQ_COLORS
, таких какtruecolor
. - Исправлено поведение
--slurp --stream
, когда входные данные не содержат завершающего символа новой строки. - Исправлена обработка пробелов при разборе чисел.
- Максимальная глубина парсинга JSON увеличена до 10000.
- Улучшено цветное форматирование вывода.
- Другие незначительные изменения.
Изменения в языке:
- Добавлены функции
trim
,ltrim
,rtrim
,trimstr(...)
,add(...)
,skip(..., ...)
,toboolean
и формат@urid
, обратный@uri
. - Функции
indices(...)
,index(...)
иrindex(...)
теперь в качестве индекса используют кодовые позиции Юникода. Используйтеutf8bytelength
для получения позиции байта. - Улучшена производительность и поведение функции
tonumber
, связанное с обработкой лидирующих и замыкающих пробельных символов. Для их удаления рекомендуется использовать функциюtrim
. - Улучшено форматирование времени в функциях
strftime
иstrflocaltime
. - Улучшена производительность функции
bsearch(...)
, которая была переписана на Си. - Улучшена производительность функций
unique
иunique_by(...)
. - Удалена функция
pow10
. Вместо неё используйте функциюexp10
. - Удалён приватный и недокументированный фильтр
_nwise
. - Исправлен приоритет унарных и бинарных арифметических операторов.
- Добавлена поддержка многострочных комментариев в стиле Tcl (строка после
# \
считается комментарием). - Исправлены ошибки в
foreach
иreduce
. - Добавлена поддержка переносов строк CRLF в фильтрах.
- Улучшена производительность повторения строк.
- Другие незначительные изменения.
Также улучшены документация и тестирование; исправлены ошибки сборки.