Wprowadzono nową wersję implementacji języka programowania AWK w ramach Projektu GNU, Gawk 5.2.0. AWK powstał w latach 70-tych ubiegłego wieku i nie uległ znaczącym zmianom od połowy lat 80-tych, w których zdefiniowano podstawowy szkielet języka, co pozwoliło mu zachować nieskazitelną stabilność i prostotę języka na przestrzeni lat dziesięciolecia. Pomimo zaawansowanego wieku AWK jest nadal aktywnie wykorzystywany przez administratorów do wykonywania rutynowych prac związanych z analizowaniem różnych typów plików tekstowych i generowaniem prostych wynikowych statystyk.
Kluczowe zmiany:
- Dodano eksperymentalne wsparcie dla menedżera pamięci pma (persistent malloc), który umożliwia zapisywanie wartości zmiennych, tablic i funkcji zdefiniowanych przez użytkownika pomiędzy różnymi uruchomieniami awk.
- Obsługa arytmetyki o wysokiej precyzji, zapewniana przez bibliotekę MPFR, została zdjęta z zakresu odpowiedzialności opiekuna GNU Awk i zlecona zewnętrznemu entuzjaście. Należy zauważyć, że implementacja trybu MPFR w GNU Awk jest uważana za błąd. W przypadku utrzymania zmiany stanu planuje się całkowite usunięcie tej funkcji z GNU Awk.
- Zaktualizowano komponenty infrastruktury montażowej Libtool 2.4.7 i Bison 3.8.2.
- Zmieniono logikę porównywania liczb, dostosowując ją do logiki stosowanej w języku C. Dla użytkowników zmiana dotyczy głównie porównania wartości Infinity i NaN ze zwykłymi liczbami.
- Możliwe jest użycie funkcji skrótu FNV1-A w tablicach asocjacyjnych, która jest włączana, gdy zmienna środowiskowa AWK_HASH jest ustawiona na „fnv1a”.
- Usunięto wsparcie dla budowania przy użyciu CMake (kod wsparcia Cmake nie był poszukiwany i nie był aktualizowany przez pięć lat).
- Dodano funkcję mkbool() do tworzenia wartości logicznych, które są liczbami, ale są traktowane jako logiczne.
- W trybie BWK określenie flagi „--traditional” domyślnie włącza obsługę wyrażeń definiujących zakresy, które wcześniej umożliwiała opcja „-r” („--re-interval”).
- Rozszerzenie rwarray oferuje nowe funkcje writeall() i readall() umożliwiające jednoczesne zapisywanie i odczytywanie wszystkich zmiennych i tablic.
- Dodano skrypt gawkbug do zgłaszania błędów.
- W przypadku wykrycia błędów składniowych zapewniane jest natychmiastowe wyłączenie, co rozwiązuje problemy związane z używaniem narzędzi do testowania rozmytego.
- Zakończono obsługę systemów operacyjnych OS/2 i VAX/VMS.
Źródło: opennet.ru