Po dwudziestu miesiącach prac opublikowano nową wersję interpretera poleceń GNU Bash 5.2, używaną domyślnie w większości dystrybucji Linuxa. Jednocześnie wydano wersję biblioteki readline 8.2, która jest stosowana w bash do organizacji edytowania wiersza poleceń.
Wśród kluczowych ulepszeń można wymienić:
- Przepisano kod do analizy konstrukcji podstawienia poleceń (command substitution, podstawianie wyjścia z wykonywania innego polecenia, na przykład „$(command)” lub `command`). Nowa implementacja korzysta z rekurencyjnego wywołania parsera bison i charakteryzuje się lepszą kontrolą składni oraz wcześniejszym wykrywaniem błędów w podstawianych konstrukcjach.
- Udoskonalono analizę i ujawnianie indeksów tablic. Zrealizowano możliwość użycia parametrów „@” i „*” w wbudowanej komendzie unset do resetowania klucza z określoną wartością zamiast resetowania całej tablicy.
- Dodano nową opcję „patsub_replacement”, która, jeśli jest ustawiona, pozwala na użycie znaku „&” w zamienianym ciągu do podstawienia części ciągu odpowiadającej zdefiniowanemu wzorcowi. Aby wstawić literał „&”, należy go zeskalować za pomocą odwrotnego ukośnika.
- Zwiększono liczbę sytuacji, w których nie tworzy się dodatkowe procesy, na przykład fork nie jest stosowany, gdy używana jest konstrukcja „$(<file)”.
- Wdrożono nowy wewnętrzny framework dla timera i obliczania timeoutów.
- Dostarczono możliwość włączenia w etapie budowy (configure —enable-alt-array-implementation) alternatywnej implementacji tablic, która jest zoptymalizowana w celu osiągnięcia maksymalnej szybkości dostępu kosztem zwiększonego zużycia pamięci.
- Rozszerzono użycie podstawień $’…’ i $»…», stosowanych podczas lokalizacji. Dodano opcję noexpand_translations oraz opcję kompilacji „configure —enable-translatable-strings”, które kontrolują włączenie wsparcia lokalizowanych podstawień $»…».
- Dodano i domyślnie włączono opcję „globskipdots”, która zabrania zwracania „.” i „..” podczas ujawniania ścieżek.
Źródło: opennet.ru
