Se ha presentado la versión 0.0.12 de uutils coreutils, un proyecto que desarrolla una alternativa al paquete GNU Coreutils, reescrito en el lenguaje Rust. El conjunto de coreutils incluye más de cien utilidades, como sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln y ls. Al mismo tiempo, se lanzó el paquete uutils findutils 0.3.0 con la implementación en Rust de las utilidades del conjunto GNU Findutils (find, locate, updatedb y xargs).
La razón para crear este proyecto y utilizar el lenguaje Rust es el deseo de desarrollar una implementación alternativa multiplataforma de Coreutils y Findutils que pueda funcionar en plataformas como Windows, Redox y Fuchsia. Otra distinción importante de uutils es que se distribuye bajo la licencia permisiva MIT, en lugar de la licencia copyleft GPL.
En la actualidad, se ha alcanzado la paridad total con GNU Coreutils en la implementación de 88 utilidades. Se observan algunas carencias en 18 utilidades, incluidas cp, dd, date, df, install, ls, more, sort, split, tail y test. Queda sin implementar solo la utilidad stty. Al pasar el conjunto de pruebas del proyecto GNU Coreutils, se han ejecutado con éxito 214 pruebas, pero 313 pruebas del equivalente en Rust aún no se superan. Sin embargo, la intensidad de desarrollo del proyecto ha aumentado significativamente: ahora se agregan de 400 a 470 parches al mes de 20 a 50 desarrolladores, en comparación con los 30 a 60 de 3 a 8 desarrolladores del año pasado.

Entre los últimos logros se destaca la optimización del rendimiento: en su estado actual, muchas utilidades, como head y cut, superan significativamente en rendimiento las versiones de GNU Coreutils. La cobertura del conjunto de pruebas ha aumentado del 55% al 75% del código total (un objetivo suficiente es el 80%). Se ha realizado un refactorizado del código para simplificar su mantenimiento, por ejemplo, se ha unificado el manejo de errores en diferentes programas, y se ha fusionado el código para manejar permisos en chgrp y chown. Se han agregado numerosos cambios para mejorar la compatibilidad con GNU Coreutils.
En los planes futuros se destaca la implementación de la herramienta stty, la continuación de los esfuerzos para mejorar la compatibilidad con GNU Coreutils, la adición de optimizaciones para reducir el tamaño de los archivos ejecutables, así como la continuación de los experimentos sobre el uso de uutils en Debian y Ubuntu en lugar de GNU Coreutils y GNU Findutils (uno de los principales desarrolladores de uutils anteriormente trabajó en un proyecto para asegurar la construcción de Debian GNU/Linux usando el compilador Clang). Además, se menciona la preparación del paquete uutils-coreutils para macOS, experimentos reemplazando GNU Coreutils con uutils coreutils en NixOS, la intención de usar uutils coreutils por defecto en la distribución Apertis y la adaptación del conjunto de uutils para Redox OS.
Fuente: opennet.ru
