Lançado bc 5.0

Lançado bc 5.0
Lançado bc 5.0

    Em Novembro de 2018 foi anunciado que o terminal de comandos toybox receberia suporte ao comando bc (confira aqui). Na verdade bc é uma linguagem Para realizar cálculos arbitrários ou simplesmente uma calculadora em linha de comando com suporte a linguagem de Turing completo.

Na versão 0.8.3 de maio de 2020, a linguagem entrou para a versão pendente. Como a versão 0.8.5 (o anuncio do lançamento pode ser conferido clicando aqui) foi lançada em Maio deste ano, eu resolvi verificar o progresso do comando.
    Esta nova versão traz muitas novidades (o total de 32) como suporte a recursos do openBSD e suporte a history para a versão do Windows; compatibilidade com o UTF8 (tando ao bc quando ao dc). Foram adicionado comandos do dc ("asciify" para a impressão de fluxo, "y" para para obter o comprimento das pilhas de registro, "Y" para o comprimento de uma matriz e "," para a profundidade da pilha de execução) além de exponenciação modular dc e divmod ao bc.

    A lib2.bc também recebeu novos recursos e melhorias como suporte a divisor comum e mínimo múltiplo comumbitwise and, or, xor, left shift, right shift, reverse, left rotate, right rotate e mod functionsfunções s2u(x) e s2un(x,n) e por ultimo uma correção de bugs em multi-digit.

    Foram adicionador quatros novos recursos que permitem os usuários customizarem suas próprias verões de binários sendo uma delas que foi um presente para mim. Difrente do GNU bc, a versões versões anteriores da linguagem bc do Gavin traziam uma mensagem de direitos autorais, contribuidores e bug report; porém a versão 4.0 já não trazia mais.

Diferença entre o bc 1.1.0 e o 4.0.2
Diferença entre o bc 1.1.0 e o 4.0.2

    O Gavin me contou que ele também gostava desta mensagem mas o que ocorreu foi que sua principal fonte de usuários (FreeBSD) não queria que essa mensagem fosse exibida por padrão e por isso foi removida. Mas uma forma que Gavin encontrou para agradar a todos foi exatamente dar a habilidade de cada usuário personalizar seu próprio binário. Quer que a mensagem não seja exibida? Basta configurar da forma padrão. Quer que a mensagem seja exibida? Utilize a sintaxe ./configure.sh -O3 -sbc.banner (muito obrigado, Gavin :).

Minha versão da linguagem bc 5.0.0 compilada com a opção ./configure.sh -O3 -sbc.banner
Minha versão da linguagem bc 5.0.0 compilada com a opção ./configure.sh -O3 -sbc.banner

    Outras personalizações que os usuários podem fazer é o uso de SIGINT (kill -2) para encerra bc, possibilidade de desabilitar o prompt e o modo TTY por variáveis de ambiente e os usuários redefinirem palavras-chave.

    Houveram muitas outras melhorias como otimização alocação de de string; permitir integers com escala non-zero serem utilizadas com operadores power, places e shift; SIGQUIT handling ao history e muitas correções de bugs.

 A linguagem bc do Gavin está disponível para Linux, FreeBSD, OpenBSD, NetBSD, Mac OSX, Solaris (desde que seja versão do Solaris com suporte a POSIX 2008), AIX e HP-UX. Espero ver mais gente envolvida com a linguagem bc no futuro :)

Comente com o Facebook:

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.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (30) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (32) comp (1) compressores (6) container (7) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (1) desenvolvimento (92) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (91) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (12) DragonflyBSD (22) driver (1) dropbear (3) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (11) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (94) gerenciadores de pacotes (4) glaucus (4) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (12) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (38) kde (1) kernel (138) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (167) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (1) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (44) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (1) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (64) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (12) segurança digital (24) servidor web (2) servidores (3) shell (9) shell script (8) sistema operacional (25) skarnet (1) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (8) terminal (89) terminal de comandos (18) toca do tux (1) toybox (27) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (2) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (15) zsh (3)