Как стать автором
Обновить

Релиз открытой библиотеки и консольной утилиты jq 1.8.0, предназначенных для обработки данных в формате JSON

Время на прочтение2 мин
Количество просмотров747

Состоялся релиз открытой библиотеки и консольной утилиты 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 в фильтрах;

  • улучшена производительность повторения строк;

  • различные незначительные изменения;

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

Теги:
Хабы:
0
Комментарии0

Другие новости

Работа

Ближайшие события