Zaprezentowano nową wersję implementacji języka programowania AWK z projektu GNU — Gawk 5.2.0. AWK został opracowany w latach 70. XX wieku i nie przeszedł znaczących zmian od połowy lat 80., kiedy to określono podstawowe zasady języka, co pozwoliło zachować jego pierwotną stabilność i prostotę przez ostatnie kilka dziesięcioleci. Mimo swojego zaawansowanego wieku, AWK wciąż jest aktywnie używany przez administratorów do wykonywania rutynowych zadań związanych z analizą różnorodnych plików tekstowych i generowaniem prostych statystyk.
Kluczowe zmiany:
- Dodano eksperymentalne wsparcie dla menedżera pamięci pma (persistent malloc), umożliwiającego zapisywanie wartości zmiennych, tablic i funkcji użytkownika pomiędzy różnymi uruchomieniami awk.
- Wsparcie dla arytmetyki wysokiej precyzji, realizowane za pomocą biblioteki MPFR, zostało przekazane z obszaru odpowiedzialności utrzymania GNU Awk do zewnętrznego entuzjasty. Zaznaczono, że implementacja trybu MPFR w GNU Awk jest uważana za błąd. W przypadku zmiany stanu z utrzymywaniem planuje się całkowite usunięcie tej możliwości z GNU Awk.
- Zaktualizowano komponenty infrastruktury budowy: Libtool 2.4.7 i Bison 3.8.2.
- Zmodyfikowano logikę porównywania liczb, dostosowując ją do logiki stosowanej w języku C. Dla użytkowników zmiana głównie dotyczy porównania wartości Infinity i NaN z zwykłymi liczbami.
- Umożliwiono użycie funkcji haszującej FNV1-A w tablicach asocjacyjnych, włączanej poprzez ustawienie zmiennej środowiskowej AWK_HASH na wartość „fnv1a”.
- Usunięto wsparcie dla budowy z użyciem CMake (kod wsparcia CMake okazał się niepotrzebny i nie był aktualizowany przez pięć lat).
- Dodano funkcję mkbool() do tworzenia wartości logicznych, które są liczbami, ale są przetwarzane jako typ Boolowski.
- W trybie BWK przy ustawieniu flagi „—traditional” domyślnie włączono wsparcie dla wyrażeń do określania zakresów, wcześniej włączanych opcją „-r” („—re-interval”).
- W rozszerzeniu rwarray zaproponowano nowe funkcje writeall() i readall() do zapisywania i odczytywania wszystkich zmiennych i tablic jednocześnie.
- Dodano skrypt gawkbug do przesyłania informacji o błędach.
- Zapewnia natychmiastowe zakończenie działania w przypadku wykrycia błędów składniowych, co rozwiązuje problemy związane z używaniem narzędzi do testowania fuzzingowego.
- Zakończono wsparcie dla systemów operacyjnych OS/2 i VAX/VMS.
Źródło: opennet.ru
