Após vinte meses de desenvolvimento, foi lançada uma nova versão do interpretador de comandos GNU Bash 5.2, utilizado por padrão na maioria das distribuições Linux. Simultaneamente, foi lançado o release da biblioteca readline 8.2, aplicada no bash para organização da edição da linha de comando.
As principais melhorias incluem:
- O código para analisar as construções de substituição de comandos foi reescrito. A nova implementação utiliza chamadas recursivas do parser bison e se distingue por uma verificação de sintaxe mais rigorosa e identificação precoce de erros nas construções substituídas.
- A análise e expansão de índices de arrays foi aprimorada. Foi implementada a possibilidade de usar os parâmetros «@» e «*» no comando interno unset para redefinir uma chave com um valor específico em vez de redefinir todo o array.
- Uma nova configuração «patsub_replacement» foi adicionada, na qual o símbolo «&» na string substituída é usado para inserir parte da string que corresponde ao padrão especificado. Para inserir o literal «&», deve-se escapar com uma barra invertida.
- Expandiu-se o número de situações em que não ocorre a bifurcação de processos adicionais; por exemplo, fork não é mais aplicado ao usar a construção «$(<file)».
- Foi implementado um novo framework interno para temporizador e cálculo de timeouts.
- Foi oferecida a possibilidade de ativar, na fase de compilação (sconfiure —enable-alt-array-implementation), uma implementação alternativa de arrays, otimizada para alcançar a máxima velocidade de acesso em troca de um maior consumo de memória.
- Expandiu-se o uso de substituições $’…’ e $»…», aplicadas durante a localização. Foram adicionadas as configurações noexpand_translations e a opção de compilação «configure —enable-translatable-strings», que controlam a ativação do suporte a substituições localizáveis $»…».
- Uma configuração «globskipdots» foi adicionada e ativada por padrão, proibindo o retorno de «.» e «..» ao expandir caminhos.
Fonte: opennet.ru
