Un desarrollador ofrece una reimplementación de GNU Coreutils en Rust 

febrero 13, 2023 0 Comments

gnu-coreutils-rust

El uso de Rust para este proyecto ayudará a acelerar este proceso, ya que se elimina por completo una gran cantidad de posibles errores

Sylvestre Ledru comenzó a trabajar una reimplementación de GNU Coreutils en Rust durante la pandemia de COVID-19 y la presentó la semana pasada durante la edición 2023 del FOSDEM. El esfuerzo llamado uutils ahora está empaquetado por muchas distribuciones de Linux y también lo usa una famosa red social a través del proyecto Yocto.

Las comparaciones de los lenguajes Rust y C++ tienen un denominador común: resaltar la superioridad de Rust sobre C++ en términos de seguridad de la memoria. El editor RisingWave explica por qué reescribió su Cloud DBMS nativo desde cero en Rust después de abandonar el proyecto C++.

“Rust garantiza la seguridad de la memoria y los subprocesos en tiempo de compilación mediante la introducción de reglas de propiedad. Va más allá de RAII, un mecanismo de administración de memoria comúnmente utilizado en C++. Tiene dos ventajas. La primera es obvia: una vez que el compilador de Rust valide nuestro programa, no tendremos ningún error de segmento ni condiciones de carrera en el tiempo de ejecución, lo que requeriría decenas de horas de depuración, especialmente en un código base altamente concurrente y en su mayoría asíncrono. El segundo es más sutil: el compilador de Rust simplemente restringe los tipos de fallas, lo que reduce los fragmentos de código estrechamente anidados que pueden causar ese comportamiento defectuoso. La replicación de errores se mejora significativamente con el utilizando la ejecución determinista. »

GNU Coreutils es un paquete del proyecto GNU que contiene muchas herramientas básicas necesarias para los sistemas operativos tipo Unix: cp (copiar un archivo o directorio), mkdir (crear un directorio), etc. Un desarrollador ofrece una reimplementación en el lenguaje Rust.

Uno de los objetivos: hacer que el paquete sea utilizable en otros sistemas operativos: Windows, macOS, Android, FreeBSD, etc. La maniobra viene a reavivar el debate sobre la cuestión de si seguir iniciando nuevos proyectos en C y C++ o simplemente optar por el lenguaje Rust.

“El lenguaje Rust ofrece garantías de seguridad por defecto cuando se trata de gestión de memoria. Este no es el caso de C y C++, cuyo uso en Mozilla es la causa de los problemas de seguridad de la memoria”, enfatiza Sylvestre Ledru.

Sin embargo, Bjarne Stroustrup no está de acuerdo con el hecho de que las comparaciones entre Rust y C++ limiten la noción de asegurar el software a la de asegurar la memoria:

«No hay una sola definición de la noción de ‘seguridad’ y podemos lograr una variedad de tipos de seguridad a través de una combinación de estilos de programación, bibliotecas de soporte y mediante el aprovechamiento del análisis estático. Bjarne Stroustrup sugiere así que lo que se puede obtener de C++ en términos de seguridad del software depende, entre otras cosas, del desarrollador y, en particular, del conocimiento de las herramientas que ofrece el lenguaje, su dominio del compilador, etc.

Los ingenieros de Google, conscientes de lo que C++ les ofrece como posibilidades, se han embarcado en la creación de un verificador de préstamos en este lenguaje. Es una característica del compilador Rust que garantiza la seguridad de la memoria a través de la gestión de asignación de punteros en memoria.

El equipo de Google, cuya publicación apareció en el tercer trimestre del año anterior, llegó a la conclusión de que el sistema tipo C++ no se presta a tal ejercicio. Y para que la seguridad de la memoria en C ++ se pueda lograr con controles durante la ejecución del programa. En otras palabras, es con código C++ lento que es posible lograr un nivel de seguridad equivalente al de Rust.

El lanzamiento del editor RisingWave llega en un contexto en el que Rust se destaca de otros lenguajes presentados durante años como alternativas a C y C++. De hecho, el kernel de Linux se está abriendo cada vez más al lenguaje de programación de sistemas de Mozilla.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.