Представен новият 5.2.0 издание на езика за програмиране AWK от проекта GNU — Gawk. AWK беше разработен през 70-те години на миналия век и не е претърпял значителни промени от средата на 80-те, когато беше определен основният скелет на езика, което позволи да запази първоначалната си стабилност и простота през последните десетилетия. Въпреки напредналата си възраст, AWK все още се използва активно от администратори за рутинни задачи, свързани с анализ на различни текстови файлове и генериране на несложна статистика.
Ключови промени:
- Добавена е експериментална поддръжка на мениджъра за памет pma (persistent malloc), което позволява запазване на стойности на променливи, масиви и потребителски функции между различни стартирания на awk.
- Поддръжката на аритметика с висока точност, реализирана с помощта на библиотеката MPFR, е извадена от обхвата на GNU Awk и е предоставена на външен ентусиаст. Подчертава се, че реализацията на режима MPFR в GNU Awk се смята за грешка. В случай на промяна на състоянието с поддръжка, се планира напълно да бъде премахната тази възможност от GNU Awk.
- Актуализирани са компонентите на инфраструктурата за изграждане Libtool 2.4.7 и Bison 3.8.2.
- Логиката за сравнение на числа е променена, за да съответства на логиката, използвана в езика C. За потребителите промяната основно засяга сравняването на стойности 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 е прекратена.
Източник: opennet.ru
