Rust Coreutils lança versão 0.9 e não tem culpa da pressa dos distribuidores destemidos demais

O projeto Rust Coreutils anunciou sua nova versão 0.9, que passa a usar como referência para testes de compatibilidade o GNU Coreutils 9.11 (até então era o 9.10).

Rust Coreutils, você sabe, é uma implementação em Rust de uma série utilitários fundamentais da linha de comando, fornecidos pelo pacote GNU Coreutils, como cp, mv, rm, ls, cat, head, tail, wc e chmod.

Esse tipo de componente é um caso de uso ideal para uma reescrita que aproveite as vantagens de segurança e desempenho que o Rust traz, e o projeto busca oferecer substitutos compatíveis para essas ferramentas.

Mas compatibilidade é mesmo o conceito-chave aqui: o ecossistema tem décadas de acervo de scripts e bibliotecas fazendo uso das interfaces e formatos (documentados ou não) adotados pelas ferramentas originais, e qualquer mudança nas entradas ou nas saídas gera efeitos inesperados, imprevisíveis, e surpreendentes, de um jeito ruim.


Um gráfico mostrando a evolução positiva dos resultados de teste de compatibilidade ao longo das versões
Note a evolução positiva dos resultados de teste de compatibilidade ao longo das versões (e o pequeno salto das falhas, após aumentar a base de compatibilidade para a versão GNU Coreutils 9.11)

Os desenvolvedores estão cientes e atentos para isso, o que talvez não seja o caso de alguns distribuidores, como os do projeto Ubuntu, que decidiram colocar desde o ano passado esse código em versões de produção, decisão que rejeito (mas não coloco na conta dos desenvolvedores, e sim dos distribuidores) – concordo 100% com a medida, mas não com a oportunidade, já que sacrifica a estabilidade e compatibilidade de hoje em prol de vantagens que serão colhidas apenas pelos usuários no final do ciclo de suporte da atual versão LTS.

Quanto à nova versão, o Changelog indica que além de melhorias de arquitetura de segurança, tivemos melhorias de desempenho (em comandos como cat, wc, head, tail, yes, cp, tee e unexpand), de compatibilidade (ls, numfmt, date, tr, cksum, factor, head, stat e sort) e suporte a modelos cross-platform.

Comentar

 
comments powered by Disqus

Comentários arquivados