Actualización de las GNU Coreutils reescritas en Rust

Se presenta el lanzamiento del kit de herramientas uutils coreutils 0.0.12, dentro del cual se está desarrollando un análogo del paquete GNU Coreutils, reescrito en el lenguaje Rust. Coreutils viene con más de cien utilidades, incluidas 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 una implementación Rust de las utilidades de la suite GNU Findutils (buscar, localizar, actualizarb y xargs).

La razón para crear el proyecto y utilizar el lenguaje Rust es el deseo de crear una implementación alternativa multiplataforma de Coreutils y Findutils, que también pueda funcionar en las plataformas Windows, Redox y Fuchsia. Otra diferencia importante con uutils es que se distribuye bajo la licencia permisiva MIT en lugar de la licencia copyleft GPL.

Actualmente, la implementación de 88 utilidades está completamente a la par con GNU Coreutils. Se observan fallas individuales en 18 utilidades, que incluyen cp, dd, date, df, install, ls, more, sort, split, tail y test. Solo la utilidad stty permanece sin implementar. Al pasar el conjunto de pruebas del proyecto GNU Coreutils, 214 pruebas se completaron con éxito, pero el análogo de Rust aún no pasa las 313 pruebas. Al mismo tiempo, la intensidad del desarrollo de proyectos ha aumentado notablemente: se agregan 400-470 parches por mes de 20-50 desarrolladores en lugar de 30-60 de 3-8 desarrolladores hace un año.

Actualización de las GNU Coreutils reescritas en Rust

De los logros recientes, se destaca la optimización del rendimiento: en el estado actual, muchas utilidades, como head y cut, superan significativamente las opciones de GNU Coreutils en rendimiento. La cobertura del conjunto de pruebas aumentó del 55 % al 75 % de todo el código (el 80 % es un objetivo suficiente). El código se refactorizó para simplificar el mantenimiento, por ejemplo, se unificó el manejo de errores en diferentes programas y se combinó el código para trabajar con derechos de acceso en chgrp y chown. Se han agregado numerosos cambios para mejorar la compatibilidad con GNU Coreutils.

Los planes para el futuro incluyen la implementación de la utilidad stty, el trabajo continuo para mejorar la compatibilidad con GNU Coreutils, agregar optimizaciones para reducir el tamaño de los archivos ejecutables y continuar experimentando con el uso de uutils en lugar de GNU Coreutils y GNU Findutils (uno de los principales desarrolladores de uutils) en Debian y Ubuntu. Trabajó anteriormente en un proyecto para proporcionar una compilación de Debian GNU/Linux usando el compilador Clang). Además, se señala la preparación del paquete uutils-coreutils para macOS, la experimentación con la sustitución de GNU Coreutils por uutils coreutils en NixOS, la intención de utilizar uutils coreutils de forma predeterminada en la distribución de Apertis y la adaptación del conjunto de uutils para Redox OS. .

Fuente: opennet.ru

Añadir un comentario