
Состоялся релиз открытой библиотеки и консольной утилиты jq 1.8.0, предназначенных для обработки данных в формате JSON с использованием встроенного сверхвысокоуровневого функционального языка программирования. Исходный код проекта написан на языке C и опубликован на GitHub под лицензией MIT. Предыдущая стабильная версия решения вышла в декабре 2023 года.
Для регулярных выражений в проекте опционально может использоваться библиотека Oniguruma. С 24 апреля 2025 года объявлено о прекращении работы над проектом и переводе в архив репозитория на GitHub библиотеки регулярных выражений Oniguruma.
Начиная с этого выпуска утилиты jq, шаблон нумерации версий изменён на X.Y.Z.
Основные изменения и дополнения в jq 1.8.0:
Исправления ошибок безопасности:
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 в фильтрах;
улучшена производительность повторения строк;
различные незначительные изменения;
улучшены документация и тестирование, а также исправлены ошибки сборки.