Se ha publicado la versión 0.3.0 del proyecto uutils coreutils (Rust Coreutils), que desarrolla una alternativa al paquete GNU Coreutils, escrita en el lenguaje Rust. El conjunto de coreutils incluye más de un centenar de utilidades, como sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln y ls. El objetivo del proyecto es crear una implementación alternativa y multiplataforma de Coreutils, capaz de funcionar en plataformas como Windows, Redox y Fuchsia.
Rust Coreutils está habilitado por defecto en la versión 25.10 de Ubuntu y se utiliza en las distribuciones AerynOS (Serpent OS) y Apertis (desarrollado por Collabora). A diferencia de GNU Coreutils, la implementación en Rust se distribuye bajo la licencia permisiva MIT, en lugar de la licencia copyleft GPL. Además, el mismo equipo de desarrollo está trabajando en análogos escritos en Rust de los conjuntos de utilidades util-linux, diffutils, findutils y procps, así como en los programas sed y login.
En la nueva versión de Rust Coreutils:
- Se ha mejorado significativamente el rendimiento de algunas utilidades; por ejemplo, en comparación con GNU Coreutils, la utilidad sort ahora es 3.72 veces más rápida en ordenamientos normales y 1.46 veces más rápida al ordenar números, base64 es 1.2 veces más rápida, expand 1.8 veces, unexpand — 1.5 veces, nl — 1.57 veces, fold — 1.19 veces, y 'uniq -c' — 1.13 veces.
- Se ha creado una infraestructura para el seguimiento del rendimiento, basada en la herramienta CodSpeed. En el sistema de integración continua se ha garantizado la detección de regresiones en el rendimiento. Se han añadido pruebas de rendimiento para 15 utilidades, entre ellas sort, ls, uniq, du y base64.
- Para las utilidades rm, du, chmod y chgrp se ha implementado un manejo seguro de rutas relativas de directorios, basado en el uso de las funciones openat y unlinkat.
- Se ha mejorado la seguridad mediante el uso del paquete crate nix en lugar de llamadas inseguras a libc.
- Se ha mejorado el manejo de errores, acercándolo al de GNU Coreutils en muchas utilidades.
- Se ha mejorado la compatibilidad con Coreutils al trabajar con rutas de archivos que contienen o no contienen caracteres UTF8.
- Se ha mejorado la compatibilidad con el conjunto de pruebas de referencia de GNU Coreutils, logrando pasar 532 pruebas (en la versión anterior 538), 68 (52) pruebas fallaron y 33 (27) pruebas fueron omitidas. Se ha declarado un nivel de compatibilidad del 83.91% (anteriormente 87.06%). La disminución del nivel de compatibilidad se explica por la adición de 16 nuevas pruebas al conjunto de pruebas.
- En la utilidad date se ha implementado la opción «—reference=file» para mostrar el tiempo de modificación del archivo. Debido a la falta de esta opción, el script de verificación automática de actualizaciones ha dejado de funcionar en Ubuntu. En date también se ha consolidado la lógica de análisis del tiempo, mejorada la compatibilidad en GNU date en la implementación de la opción «-d» y se ha añadido el flag «—resolution» para mostrar datos sobre la precisión de la contabilización del tiempo.
- Se han implementado las opciones: «basenc —base58», «id -a», «ls -f», «pinky —lookup», «realpath -E», «rm —progress».
- Se han ampliado las capacidades, solucionado problemas y añadido las opciones faltantes para las utilidades base64, basenc, chgrp, chmod, cksum, cp, csplit, date, df, dirname, du, expand, expr, fold, hashsum, hostname, id, install, ln, ls, mv, nl, nohup, numfmt, od, pinky, ptx, realpath, rm, seq, sort, stat, stdbuf, stty, tail, timeout, touch, tsort, unexpand, uniq, uname, wc, who, uucore.
Fuente: opennet.ru
