[LOR] GNU awk 4.0.0

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Аватара пользователя
rssbot
Бот
Сообщения: 6000
ОС: gnu/linux

[LOR] GNU awk 4.0.0

Сообщение rssbot »

Аарон Роббинс (Aharon Robbins) сообщил в рассылке о радостном событии — выходе версии 4.0.0 GNU Awk.


При переходе от версии 3.1.8 к 4.0.0 произошел ряд изменений, в том числе и изменения в поведении программы:
  • Изменения в поведении gawk
    • Для `sub' и `gsub' по умолчанию используется поведение согласно стандарту POSIX 2008
    • В соответствии с GNU Coding Standards динамические расширения (плагины) должны теперь определять глобальную переменную plugin_is_GPL_compatible для указания совместимости этих расширений с лицензией GNU GPL
    • В режиме POSIX-совместимости для сравнения строк используется strcoll/wcscoll
    • Диапазоны вида [d-h] теперь обрабатываются так, как в локали C, независимо от типа используемого регулярного выражения, даже при указании --posix. Последняя версия стандарта POSIX разрешает такое поведение. Это изменение должно пресечь замеченное в старых версиях gawk ветки 3.* поведение, когда в некоторых локалях диапазон [a-z] включал в себя символы в верхнем регистре, подробнее этот вопрос рассмотрен в этой теме рассылки, тем не менее рекомендация использовать [[:lower:]] и [[:upper:]] для таких целей всё ещё актуальна
  • Больше не используются специальные файлы /dev/pid, /dev/ppid, /dev/pgrpid, /dev/user. Вместо них рекомендуется пользоваться PROCINFO
  • Пробельные (s) и отличные от пробельных (S) управляющие последовательности распознаются в регулярных выражениях
  • Функция split() принимает четвёртый необязательный аргумент: массив, содержащий значения символов-разделителей
  • Новая опция -b / --characters-as-bytes отключает интерпретацию входных данных как многобайтовых символов
  • Новая опция --sandbox
  • Доступны косвенные вызовы функций
  • Количественные модификаторы или квантификаторы (Interval expressions) теперь входят в перечень стандартных регулярных выражений синтаксиса gawk
  • Опция --gen-po получила более корректное наименование --gen-pot
  • switch / case включены по умолчанию, отпала необходимость включать их на этапе конфигурации
  • Добавлена поддержка BEGINFILE и ENDFILE
  • Передача в командную строку gawk вместо имени текстового файла имени каталога, теперь генерирует предупреждение, а не фатальную ошибку [1], если не указана --posix или --traditional, с этими опциями генерируется фатальная ошибка
  • Новая переменная FPAT позволяет указать регулярное выражение для поля, а не для разделителя полей. Новая функция patsplit() даёт такую же возможность для разделения строк
  • Все длинные опции получили короткие аналоги для использования в `#!' скриптах
  • Добавлена поддержка IPv6 через специальный файл /inet6/... ; /inet4/... форсирует использование IPv4, а /inet позволяет считать значение по умолчанию в системе (чаще всего IPv4)
  • Добавлено предупреждение при использовании /[:space:]/ вместо рекомендуемого /[[:space:]]/
  • В основную ветку внесена реализация байт-кодового gawk авторства Джона Хака (John Haque). Добавлен отладчик dgawk, возможно повышение производительности
  • `break' и `continue' недействительны вне цикла, даже при указании --traditional
  • Классы символов POSIX работают с --traditional (BWK awk также поддерживает их)
  • Опции --compat, --copyleft, --usage были удалены по причине их избыточности
  • Добавлены массивы массивов (многомерные массивы)
  • Удалена опция для raw сокетов, поскольку так и не была реализована
  • PROCINFO["strftime"] теперь содержит формат по умолчанию для strftime()
  • При разработке новой версии использованы Autoconf 2.68, Automake 1.11.1, Gettext 0.18.1, Bison 2.5
  • Выполнена чистка кода, в том числе удалён код для старых, неподдерживаемых систем (Atari, Amiga, BeOS, Cray, MIPS RiscOS, MS-DOS с Microsoft Compiler, MS-Windows с Microsoft Compiler, NeXT, SunOS 3.x, Sun 386 (Road Runner), Tandem (non-POSIX), Prestandard VAX C compiler for VAX/VMS и др.)
  • Если PROCINFO["sorted_in"] определён, циклы, выполняющие обработку элементов массива по так называемой конструкции "for(iggy in foo)" сортируют индексы прежде чем приступить к проходу по циклу. Значение этого элемента позволяет осуществлять контроль за тем, как индексы будут отсортированы перед началом обхода цикла
  • Новая фукнция isarray() проверяющая, является ли элемент массивом, делает возможной обработку многомерных массивов
  • Функции asort() и asorti() принимают третий аргумент для указания способа сортировки
>>> Исходные коды

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

оригинал на linux.org.ru
Спасибо сказали:
Аватара пользователя
Dmitry Shurupov
Сообщения: 336
Статус: Open Source geek
ОС: Ubuntu Linux

Re: [LOR] GNU awk 4.0.0

Сообщение Dmitry Shurupov »

В конце июня состоялся релиз версии 4.0 классической консольной утилиты gawk, являющейся свободной реализацией awk в рамках проекта GNU. Это первое крупное обновление gawk за последние 10 лет. AWK, реализацией которого является gawk, — это «язык поиска и обработки шаблонов», а на практике — инструмент для обработки текстовых данных и составления отчетов на базе результатов этой обработки. Последний крупный релиз gawk — 3.1 — был представлен в далеком 2001 году, и вот недавно подоспело крупное обновление — gawk 4.0. Среди изменений в gawk 4.0 можно выделить следующие:

  • поддержка BEGINFILE и ENDFILE;
  • поддержка последовательностей "s" и "S" в регулярных выражениях;
  • поддержка непрямых вызовов функций;
  • новая опция -b (--characters-as-bytes), чтобы gawk не рассматривал ввод как многобайтовую строку;
  • «sub» и «gsub» теперь по умолчанию ведут себя в соответствии с POSIX 2008;
  • поддержка массивов из массивов;
  • поддержка IPv6;
  • обновление «инфраструктуры» на Autoconf 2.68, Automake 1.11.1, Gettext 0.18.1 и Bison 2.5;
  • очищение кода от пережитков поддержки старых платформ (Atari, Amiga, BeOS, Cray, MIPS RiscOS, MS-DOS и MS Windows с Microsoft Compiler, NeXT, SunOS 3.x, SunOS 386).
Архив с исходным кодом gawk 4.0 можно найти, например, на немецком зеркале.

оригинал на www.nixp.ru
По-моему, это еще один повод перейти на Убунту.
Спасибо сказали: