Представлен новый выпуск реализации языка программирования AWK от проекта GNU – Gawk 5.2.0. AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с разбором различного рода текстовых файлов и генерацией несложной результирующей статистики.
Ключевые изменения:
- Добавлена экспериментальная поддержка менеджера памяти pma (persistent malloc), позволяющего сохранять значения переменных, массивов и пользовательских функций между разными запусками awk.
- Поддержка арифметики высокой точности, реализуемая при помощи библиотеки MPFR, выведена из области ответственности сопровождающего GNU Awk и передана стороннему энтузиасту. Отмечается, что реализация режима MPFR в GNU Awk рассматривается как ошибка. В случае изменения состояния с сопровождением планируется полностью удалить данную возможность из GNU Awk.
- Обновлены компоненты сборочной инфраструктуры Libtool 2.4.7 и Bison 3.8.2.
- Изменена логика сравнения чисел, которая приведена в соответствие с логикой, применяемой в языке Си. Для пользователей изменение в основном затрагивает сравнение значений Infinity и NaN с обычными числами.
- Предоставлена возможность использования хэш-функции FNV1-A в ассоциативных массивах, включаемая при выставлении переменной окружения AWK_HASH в значение “fnv1a”.
- Удалена поддержка сборки с использованием CMake (код поддержки Cmake оказался не востребован и пять лет не обновлялся).
- Добавлена функция mkbool() для создания булевых значений, которые являются числами, но обрабатываются как тип Boolean.
- В режиме BWK при указания флага “–traditional” по умолчанию включена поддержка выражений для определения диапазонов, ранее включаемых опцией “-r” (“–re-interval”).
- В расширении rwarray предложены новые функции writeall() и readall() для записи и чтения разом всех переменных и массивов.
- Добавлен скрипт gawkbug для передачи информации об ошибках.
- Обеспечено мгновенное завершение работы в случае определения синтаксических ошибок, что решает проблемы с использованием инструментов для fuzzing-тестирования.
- Прекращена поддержка операционных систем OS/2 и VAX/VMS.
Release.
Ссылка here.