No final do mês passado compartilhamos aqui no blog a notícia que Brian Kernighan, um dos criadores do AWK tinha confirmado que continua atrás do código AWK, dando suporte e aprimorando essa linguagem de processamento (você pode consultar as novidades em o seguinte link.)
A razão para mencionar isso é que recentemente uma nova versão da implementação GNU-Gawk foi lançada 5.2.0, da linguagem de programação AWK.
O AWK foi desenvolvido na década de 70 e não sofreu mudanças significativas desde meados da década de 80, quando foi definida a espinha dorsal principal da linguagem, o que permitiu manter a estabilidade original e a simplicidade da linguagem ao longo do tempo. décadas.
AWK foi um dos primeiros utilitários de console popular para gerenciar (manusear/extrair) dados maximizando a funcionalidade dos pipelines UNIX. A linguagem fornecida por este utilitário é atualmente um padrão em quase todos os sistemas operacionais do tipo UNIX modernos, tanto que faz parte das especificações básicas do UNIX, por isso geralmente é encontrado já instalado na maioria deles por padrão.
Apesar da idade avançada, os administradores ainda usam ativamente o AWK para realizar trabalhos de rotina relacionados à análise de vários tipos de arquivos de texto e geração de estatísticas simples resultantes.
Este comando fornece uma linguagem de script para processamento de texto com a qual podemos: Definir variáveis, usar strings e operadores aritméticos, usar controle de fluxo e loops e gerar relatórios formatados. Na verdade, o Awk é mais do que um simples comando de processamento de padrões, é toda uma linguagem de análise semântica.
Principais novos recursos do GNU Awk 5.2
Nesta nova versão que se apresenta, destaca-se que adicionado suporte experimental para gerenciador de memória pma (malloc persistente), que permite salvar os valores de variáveis, arrays e funções definidas pelo usuário entre diferentes execuções do awk.
Outra das mudanças que se destacam nesta nova versão é que lógica de comparação alterada de números, que se alinha com a lógica usada na linguagem C. Para usuários, a mudança afeta principalmente a comparação dos valores Infinity e NaN com números regulares.
Além disso, também observa-se que a capacidade de usar a função de hash FNV1-A em arrays associativos, ele é habilitado definindo a variável de ambiente AWK_HASH como "fnv1a".
No modo BWK, especificar o sinalizador “–tradicional” por padrão permite a compatibilidade com expressões de intervalo incluídas anteriormente com a opção “-r” (“–re-interval”).
A extensão rwarray fornece novas funções writeall() e readall() para escrever e ler todas as variáveis e arrays de uma só vez.
Além disso, suporte para aritmética de alta precisão, foi implementado usando a biblioteca MPFR, além de removido da responsabilidade do mantenedor do GNU Awk e transferido para um entusiasta de terceiros. Note-se que a implementação do modo MPFR do GNU Awk é considerada um bug. No caso de uma mudança de estado sustentada, está planejado remover completamente esse recurso do GNU Awk.
Das outras mudanças que se destacam nesta nova versão:
- Componentes de infraestrutura de compilação atualizados Libtool 2.4.7 e Bison 3.8.2.
- Removido suporte para compilação com CMake (suporte de código para CMake não estava em demanda e não foi atualizado por cinco anos).
- Adicionada a função mkbool() para criar valores booleanos que são números, mas são tratados como um tipo booleano.
- Adicionado script gawkbug para reportar bugs.
- O desligamento instantâneo é fornecido em erros de sintaxe, resolvendo problemas usando ferramentas de fuzzing.
- Houve inúmeras pequenas limpezas de código e correções de bugs.
- O suporte para os sistemas operacionais OS/2 e VAX/VMS foi removido.
Finalmente, se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir.