Páginas

wak: Uma implementação do awk para o toybox


wak -- an awk implementation for toybox and standalone

wak: Uma implementação do awk para o toybox

 Em 2024, Ray Gardner com contribuição de Oliver K. Webb disponibilizaram o wak, uma implementação POSIX compacta da linguagem de programação awk para o toybox ou para poder também ser utilizado como standalone. O professor Nelson H. F. Beebe da Universidade de Utah também está envolvido em seu desenvolvimento dando conselhos relacionados a melhorias do programa e do uso do makefile.

 O wak é realmente compacto; escrito em apenas 4500 linhas de código que quando compilado, linkando estaticamente, o wak possui apenas 244  kbytes. O wak entrou no diretório pending do toybox em Janeiro de 2025, na versão 0.8.12 porém, como awk e não wak.


Informações de binário do wak
Informações de binário do wak

wak no diretório pending do toybox com o nome awk
wak no diretório pending do toybox com o nome awk

 O wak é em sua maioria compatível com as implementações awk POSIX, o One True Awk de Brian Kernighan, também conhecido como nawk, este é o original awk do Unix que recebeu uma atualização em 2022 e que é utilizando inclusive pelo Android,  o awk do Busybox e o gawk do GNU com axceção de sua extensões. O wak tenta ser compatível com a POSIX.1-2024, exceto onde conflita com praticas tradicionais e comuns de outras implementações do awk como exemplo, tentar ser o tanto UTF-8 safe (confiram as informações de Oliver Webb) quanto razoavelmente possível, seguindo as abordagens do toybox. Neste vídeo eu apresento alguns dos testes manuais que eu fiz para testar a sua compatibilidade com outros awks: 



 O wak é mantido sob a clausula zero BSD (BSD0) para manter dentro dos padrões de licença do toybox porém, como os arquivos do diretório test pertencem ao gawk 5.3.1, então estes arquivos são mantidos sob a GPL2. O código é escrito em C99 (exceto o recurso anonymous unions) tanto no GCC quanto no Clang mas também é possível compilar o wak com TinyCC. Report de bugs são sempre bem vindos.


A IMPORTÂNCIA DE AWK

 Ao longo do tempo, awk foi perdendo espaço para outras linguagens como Python e Perl, porém a especificação POSIX e especificalmente a Single UNIX Specification (SUS) determinam que todo sistema operacional que declaram ser um Unix (ou totalmente POSIX) deva disponibilizar uma versão de awk compatível com a POSIX para assim ser oficialmente Unix legítimo e certificado. Essa exigência está relacionada a awk fazer parte do conjunto de comandos necessários para tornar scripts portáveis entre outros Unix.

 Além do mais, awk é uma das dependências para se compilar o kernel Linux pois é utilizado por vários build scripts e configurações. Enquanto compiladores e outras ferramentas são responsáveis por gerar os binários, awk e outros comandos são responsáveis pela parte de scripts que tratarão de informações como saber os ranges de memória, preempção do kernel e muito mais.

scripts awk presentes no kernel
scripts awk presentes no kernel

 Rob Landley descreveu em seu blog em 2021:

" Estou imaginando que dd, expr, tr, awk, sh, bc, bison, flex, make, ar, e gzip são necessários para construir o kernel..."

 E continuamos em seu roadmap a série de comandos necessários para construir um ambiente mínimo de uma distribuição capas de bootar o sistema executando init scripts e outros shell scripts e oferecer uma sessão do shell.


 A intenção é oferecer ferramentas necessárias para o Android ser capaz de compilar o kernel Linux e suas próprias ferramentas.


An awk implementation for toybox and standalone

wak - An awk implementation released

Writing a UTF-8 Safe AWK | Oliver Webb

Confira mais sobre o toybox clicando aqui


QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)
QUER APRENDER LINUX? ENTÃO CONFIRA O MEU CURSO DE MIGRAÇÃO PARA LINUX CLICANDO AQUI :)

Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.