Увидел свет GNU Awk 4.0.0
Опубликовано 02 Июль 2011 20:43:39
После двух лет разработки и спустя десять лет после формирования прошлой стабильной ветки 3.1 представлен новый значительный релиз реализации языка программирования AWK от проекта GNU - Gawk 4.0.0. Язык был разработан в 70-х годах прошлого века и не претерпел значительных изменений с середины 80-х годов, в которых был определен основной костяк AWK, что позволило на протяжении последних десятилетий сохранить первозданную стабильность и простоту языка. Несмотря на преклонный возраст, AWK до сих пор активно используется администраторами для выполнения рутинных работ, связанных с парсингом различного рода текстовых файлов и генерации несложной результирующей статистики.
Источник: http://www.opennet.ru/opennews/art.shtml?num=31067
В новой версии устранены некоторое слабые стороны Gawk и отражены современные реалии. Из добавленных улучшений можно отметить:
- Переработана внутренняя архитектура, проведена чистка кода и изменен метод генерации байткода, что в сумме, возможно, положительно сказалось на производительности;
- Отладчик dgawk, напоминающий GDB;
- Возможность включения кода из внешних файлов;
- Поддержка косвенного вызова функций, что позволяет привязать функцию-обработчик к определенному строковому значению, т.е. избежать череды проверок if-else за счет использования конструкций вида "result = @the_func()", где "the_func" переменная, в которой содержится имя вызываемой функции;
- Реализация шаблонов BEGINFILE и ENDFILE, позволяющих выполнить код перед открытием и после завершения обработки очередного файла (имя файла передается через переменную FILENAME). Используя BEGINFILE, например, можно проверить права доступа к файлу или предпринять какие-то действия перед началом парсинга;
- Поддержка IPv6 через специальный файл /inet6/...;;
- Возможность создания вложенных массивов, в которых элементом массива может выступать другой массив;
- Реализация режима изолированного выполнения (опция --sandbox), при котором запрещено выполнение функции system(), перенаправление ввода и вывода, динамическая загрузка расширений. Опцию можно применять в случае, когда нужно запустить скрипт, полученный из сомнительных источников;
- Включение по умолчанию switch/case (раньше нужно было собирать gawk с указанием специальной опции в configure);
- Удалена поддержка устаревших платформ, среди которых Atari, Amiga, BeOS, Cray, MIPS RiscOS, MS-DOS и Windows c использованием компилятора от Microsoft, NeXT, SunOS 3.x;
- В регулярных выражениях добавлена поддержка указания интервалов и возможность использования масок "\s" и "\S";
- Добавлена новая переменная FPAT, позволяющая задать определяющее поля регулярное выражение, вместо использования разделителя полей. Добавлена новая функция patsplit(), которая позиционируется как аналог split() с реализацией данной функциональности;
- В функции split() добавлена поддержка четвертого опционального аргумента с массивом для сохранения разделителей;
- Новая опция "--characters-as-bytes" ("-b") для принудительной интерпретации входных данных как строк из однобайтовых символов;
- Директивы "break" и "continue" отныне нельзя использовать вне циклов, за исключением вызова скрипта с опцией "--traditional";
- Добавлена функция isarray() для проверки, является ли аргумент массивом (упрощает реализацию перебора вложенных массивов);
- В функции asort() и asorti() добавлена поддержка третьего аргумента, задающего метод сортировки.
Источник: http://www.opennet.ru/opennews/art.shtml?num=31067
|
0 | Tweet | Нравится |
|