jq 1.8.0

good-penguin.png

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 в фильтрах.
  • Улучшена производительность повторения строк.
  • Другие незначительные изменения.

Также улучшены документация и тестирование; исправлены ошибки сборки.

>>> Подробности на GitHub

©  Linux.org.ru