Новая версия языка программирования GNU Awk 4.2.0
20 октября 2017 года
После четырёх с половиной лет разработки доступен новый значительный выпуск реализации языка программирования AWK от проекта GNU - Gawk 4.2.0. AWK был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк языка, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода текстовых файлов и генерации несложной результирующей статистики.
Ключевые изменения:
- При запуске не в режиме POSIX переменные в ENVIRON теперь отражаются в окружение gawk и дочерних программ, запущенных через вызов system();
- Увеличено качество псевдослучайных чисел, выдаваемых функцией rand(). Порядок чисел в последовательности по-прежнему повторяем, поэтому rand() не подходит для криптографических нужд;
- Улучшена работа режима вывода отформатированного кода программы. При указании опции "--pretty-print" AWK-программа теперь не запускается;
- Добавлена возможность сборки с использованием CMake, который теперь позиционируется в качестве альтернативного сборочного инструментария;
- Добавлена настройка PROCINFO["NONFATAL"] при которой ошибки ввода/вывода не приводят к завершению выполнения. По аналогии PROCINFO["redirection", "NONFATAL"] действует для перенаправленных потоков;
- Добавлена опция PROCINFO[input-file, "RETRY"], при установке которой в случае ошибки ввода/вывода предпринимается повторная попытка выполнения операции;
- Нарушена бинарная совместимость для C API, Си-приложения связанные с gawk требуют пересборки;
- Добавлена поддержка строго типизированных констант с регулярными выражениями, задаваемых в виде "@/.../". Такие константы можно присвоить переменным и использовать справа от операторов "~" и "!~", а также в составе выражений "case";
- Добавлена функция typeof() для определения типа переменной (array, regexp, string, number);
- Прекращена поддержка старого механизма подключения расширений, основанного на применении функции "extension";
- Прекращена поддержка платформы GNU/Linux на системах Alpha;
- Прекращена поддержка операционной системы MirBSD;
- Возвращён в строй порт для DJGPP, для которого нашёлся сопровождающий;
- Включена по умолчанию оптимизация кода выполняемых приложений, для отключения которой следует использовать опцию "-s/--no-optimize';
- При наличии задействован механизм fwrite_unlocked, позволяющий на 7% - 18% поднять скорость вывода gawk '{ print }' для больших файлов;
- Ускорены операции в режиме IGNORECASE;
- Использование отрицательных значений в битовых функциях теперь приводит к завершению работы с ошибкой;
- В mktime добавлен второй аргумент для включения преобразования времени в UTC вместо локального часового пояса;
- Добавлен массив PROCINFO["argv"], в котором сохраняются все аргументы командной строки.
ИсточникиПравить
Эта статья содержит материалы из статьи «Новая версия языка программирования GNU Awk 4.2.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии:Новая версия языка программирования GNU Awk 4.2.0