Lançado bc 6.1.1 |
No dia 02 de Novembro, Gavin Howard lançou a versão 6.1.1 da linguagem bc, uma das dependências para compilar o kernel Linux. As novidades ocorreram mesmo na verdade na versão 6.1.0 porém, como já sabem, eu aguardei o Gavin concluir seu trabalho pois é muito comum em seguida lance uma nova versão com algumas pequenas correções. Como a versão 6.1.1 herda as novidades da versão anterior, então vamos notar as novidades a partir da 6.0.1.
A versão 6.0.1 trás três novos recursos. O primeiro em adição da função built-in is_number() (u na linguagem dc incorporada ao bc do Gavin) que retorna o valor 1 caso o argumento runtime for um número e 0 caso seja ao contrário. O segundo recurso adicionado a função built-in is_string() (t no dc) que retorna 1 se o argumento runtime for um string e 0 caso seja o contrário. Estes dois recursos foram adicionados por que Gavin chegou a conclusão de que type-checking era necessário agora que strings podem ser atribuídos a variáveis em bc e pois sempre foram atribuídos à variáveis em dc.
O terceiro recurso trata-se da habilidade da função built-in asciify() no bc de converter todos uma array de números em string. Isso significa que impressão caractere por caractere não será necessário e mais strings do que apenas simples caractere serão capazes de ser criados.
Também houveram correções de bugs como na discrepância do comportamento padrão do bc (de sair do programa quando encontrava um quit mesmo se estivesse analisando todo um arquivo. Agora o bc finaliza somente quando encontra quit depois que executou todas as declarações a partir daquele ponto.
Esse comportamento é diferente do bc do GNU (mesmo bc utilizado pelo NetBSD) mas os usuários notarão somente se colocarem quit na mesma linha como outras declarações.
O primeiro bug de memória poderia ser reproduzido ao declarar um string a uma variável não local em uma funçao, depois redefinir a função com uso da mesma variável não local, que ainda se referiria a um string na verão anterior da função. O segundo bug de memória foi causado por passar um argumento array à função built-in asciify(). Em certos casos, que foi permitido erroneamente e o interpretador simplesmente assumiu, tudo estava correto e acessou a memória. Agora que arrays são permitidas como argumentos, isso já não se torna mais um problema.
Já a versão 6.1.1 traz somente correções relacionadas a builds predefinidas e testes gerados.
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.