El proyecto de código abierto Redox OS, basado en Rust, ha publicado una nueva entrada en su blog en la que esboza algunos de sus logros recientes y adelanta otras aventuras técnicas previstas para este año.
Los desarrolladores de Redox OS han estado ocupados en el nuevo año trabajando en nuevas características, portando más software Linux a esta plataforma centrada en Rust, y otros trabajos para hacer este sistema operativo de código abierto más utilizable.
Puede leer también | Rust en Linux: Dónde Estamos y Hacia Dónde Vamos
Redox OS se ha basado tradicionalmente en un formato URI/URL para acceder a los recursos, pero para facilitar la portabilidad de software Linux a Redox, han cambiado su formato de ruta de recursos para que sea más compatible con Linux con un esquema de tipo archivo. El nuevo formato de ruta basado en archivos se ha puesto en marcha para su kernel y la implementación relibc, así como la capacidad de traducir de forma transparente entre formatos.
Puede leer también | El Futuro Brillante de Rust: Más allá de un Lenguaje de Programación
Redox OS también ha estado viendo más trabajo últimamente en portar software adicional de Linux a este sistema operativo basado en Rust. Editores como Nano y Helix están trabajando ahora en Redox OS y otras aplicaciones están empezando a funcionar. COSMIC Desktop de System76 también está siendo portado a Redox OS:
Otros trabajos recientes en Redox incluyen la mejora de su sistema de construcción y la aceleración de las cosas. Redox OS también ha seguido trabajando en la portabilidad de Raspberry Pi, una revisión del controlador PCI, relibc, ya que la implementación libc de Redox se ha convertido a su nueva implementación malloc, y otras mejoras del kernel.
Puede leer también | Lenguaje de programación Rust se va introduciendo en el núcleo de Linux
Mirando hacia el futuro, Redox va a estar trabajando en su caso de uso de servidor web, abordando el soporte USB/HID, perfiles de rendimiento, más pruebas automatizadas, y la portabilidad de más software Linux.
Formato de ruta de Redox
Redox tiene un núcleo microkernel, con controladores y otros proveedores de recursos que se ejecutan como tareas y proporcionan "esquemas". Un esquema es el nombre de un proveedor de recursos, y hasta ahora se ha accedido a los recursos utilizando el formato URI/URL. Por ejemplo, a los archivos se accedía como file:path/to/mi_archivo, y a una conexión TCP como tcp:127.0.0.1. Este formato, aunque con visión de futuro, no ha sido muy compatible con versiones anteriores.
Puede leer también | Lanzamiento de uutils 0.0.21 con más mejoras para GNU Coreutils escrito en Rust
Con el fin de simplificar nuestros esfuerzos para portar software Linux a Redox, hemos decidido cambiar nuestro formato de ruta de recursos al compatible con Linux /esquema/nombre_esquema/ruta/a/recurso. Las rutas que no empiecen por /esquema serán asumidas como referidas al esquema de archivos, por lo que /ruta/a/mi_archivo es tratada por el sistema como /esquema/archivo/ruta/a/mi_archivo, pero la aplicación sólo verá la parte de /ruta/a/mi_archivo. Usando este formato, las rutas normales se parecen ahora a las rutas de Linux, mientras que los controladores y otros recursos pueden seguir siendo direccionados sin romper el software.
Puede leer también | Instalación de Rust paso a paso
La implementación de este cambio ha comenzado, y el kernel y nuestra implementación relibc de libc pueden traducir entre formatos de forma bastante transparente. Las aplicaciones y los esquemas se están actualizando a medida que llegamos a ellos, por lo que es posible que notes algunas imperfecciones, pero la parte esencial del cambio se ha completado y el sistema funciona bien.
Raspberry Pi
¡Redox funciona en Raspberry Pi 3 Modelo B+! Gracias a Ivan Tan, Redox puede ejecutar nuestra configuración mínima de servidor en la RP3B+.
Ivan también nos ha ayudado a renovar nuestro sistema de construcción para que pueda manejar múltiples modelos de RP, cada uno con su propia configuración de hardware.
Mejoras en el núcleo y los controladores
Quiero destacar especialmente las contribuciones de Bjorn3. Ha estado arreglando cosas como Spock al final de TOS S3.E11. Los elementos principales incluyen la reelaboración del controlador PCI, varias correcciones y algunas limpiezas en el núcleo, y mejoras en el sistema de construcción.
Relibc
También se ha implementado en Rust de libm y libcrypt, y ha implementado varias funciones nuevas de libc, incluyendo algunas funciones de cadena de caracteres anchos y algunas funciones de manejo de pseudo-terminales.
ABI estable
Mientras trabajamos hacia una ABI estable, 4lDO2 continúa eliminando código que utiliza directamente la crate redox_syscall. La nueva interfaz estable es libredox para el código Rust específico de Redox y relibc para todos los demás. Esto nos permite cambiar la implementación de nuestras actuales llamadas al sistema, por ejemplo, moviendo funcionalidad al espacio de usuario, sin cambiar la API.
Puede leer también | Linux 6.1 disponible con la infraestructura de Rust
Una vez que tengamos una API estable, podremos centrarnos en el siguiente paso, que es una ABI estable proporcionada a través de la vinculación dinámica contra relibc y una biblioteca libredox. La vinculación dinámica en Redox no está lista para el prime time, pero sólo debería ser cuestión de encontrar el tiempo para hacerlo.
/dev/tty
Con un poco de truco de relibc, hemos hecho que /dev/tty se refiera a la terminal del proceso. Esto puede no parecer gran cosa, pero como la mayoría de las bibliotecas TUI dependen de /dev/tty para obtener las propiedades de la terminal, ha mejorado enormemente nuestra compatibilidad con bibliotecas como crossterm. De hecho, ahora somos capaces de descartar nuestro fork de crossterm y usar la versión upstream directamente.
Más información sobre los últimos trabajos de Redox en Redox-OS.org.