28 de abril y 5 de mayo se llevaron a cabo las versiones 2.3 y 2.3.1 del sistema operativo Unix-like ToaruOS, desarrollado desde cero y que incluye su propio núcleo, gestor de arranque, biblioteca estándar de C, gestor de paquetes, componentes del espacio de usuario y una interfaz gráfica con un gestor de ventanas compuestas.
Inicialmente, el proyecto se desarrolló en la Universidad de Illinois como un trabajo de investigación en la creación de nuevas interfaces gráficas compuestas, pero luego se transformó en un sistema operativo independiente. El código del proyecto está escrito en C y se distribuye bajo licencia BSD. Se ha preparado una imagen live (2.3.1), de 7.4 MB, que se puede probar en QEMU, VMware o VirtualBox.
ToaruOS se basa en un núcleo que utiliza una arquitectura modular híbrida, que combina una base monolítica con medios de utilización de módulos cargables, en los que están formulados la mayoría de los controladores de dispositivos existentes, tales como controladores de disco (PATA y ATAPI), sistema de archivos Ext2 e ISO9660, framebuffer, teclado, ratón, tarjetas de red (AMD PCnet FAST, Realtek RTL8139 e Intel PRO/1000), chips de sonido (Intel AC’97), así como extensiones de VirtualBox para sistemas invitados. El núcleo soporta hilos de Unix, TTY, sistema de archivos virtual, pseudo-sistema de archivos /proc, multihilo, IPC, ramdisk, ptrace, memoria compartida, multitarea y otras capacidades típicas.
El sistema está equipado con un gestor de ventanas compuestas, soporta archivos ejecutables vinculados dinámicamente en formato ELF, multitas tareas, pila gráfica, puede ejecutar Python 3 y GCC. Se utiliza ext2 como sistema de archivos. El gestor de arranque soporta BIOS y EFI. La pila de red permite utilizar API de sockets al estilo de los sistemas BSD y soporta interfaces de red, incluido loopback.
Entre las propias aplicaciones destaca un editor de código similar a Vi, Bim, que se ha utilizado durante los últimos años para desarrollar aplicaciones específicas para ToaruOS, como un gestor de archivos, emulador de terminal, panel gráfico con soporte para widgets, gestor de paquetes, así como bibliotecas para soportar imágenes (PNG, JPEG) y fuentes TrueType. Se han portado a ToaruOS programas como Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, emulador de Super Nintendo, Bochs, etc.
El proyecto también desarrolla su propio lenguaje de programación dinámico Kuroko, diseñado para reemplazar Python en el desarrollo de utilidades y aplicaciones de usuario para el sistema. El lenguaje tiene una sintaxis similar a Python (se posiciona como un dialecto reducido de Python con la definición de variables explícita) y se distingue por su implementación muy compacta. Soporta la compilación e interpretación de bytecode. El intérprete de bytecode proporciona un recolector de basura, soporta la multihilo sin aplicación de bloqueos globales. El compilador y el intérprete pueden ser compilados en forma de una pequeña biblioteca compartida (~500KB), integrable con otros programas y extensible a través de la API de C. Además de ToaruOS, el lenguaje puede utilizarse en Linux, macOS, Windows y ejecutarse en navegadores que soporten WebAssembly.
En nueva versión:
- Se ha agregado soporte para pestañas en el emulador de terminal, que se pueden alternar mediante la secuencia Alt-número. Se ha implementado la emulación de la tipografía en negrita mediante la superposición doble de glifos. Se han agregado submenús 'Estado del terminal' para habilitar la visualización del estado de diversos modos y 'Enviar señal' para enviar señales a procesos en segundo plano.
- Se ha implementado un visor de manuales del sistema que soporta páginas man en formato roff.
- Se añadió un submenú al menú contextual para gestionar la disposición mosaico de las ventanas.
- Se han implementado nuevas llamadas al sistema en el núcleo, entre las que se encuentran pread/pwrite, sigsuspend, sigqueue, lchown, pipe2, dup3, getrusage y fcntl. Se ha agregado soporte para los flags FD_CLOEXEC y FD_CLOFORK. Se ha implementado el soporte para la aleatorización de la dirección de carga del núcleo. La ABI de las llamadas al sistema ha sido adaptada para usar las instrucciones syscall/sysret.
- Se han ampliado significativamente las capacidades de la consola virtual (TTY), proporcionando la emulación del modo de texto VGA basada en framebuffer.
- En la versión para la arquitectura Aarch64 se ha implementado la posibilidad de ejecutar en máquinas virtuales basadas en QEMU.
- Se añadió al stack de red el soporte para trabajar simultáneamente con múltiples sockets ICMP.
- Se han agregado funciones a la biblioteca estándar libc: getdelim, getline, scandir, telldir, rewinddir, seekdir, ftruncate, fchmod, fchown, popen, pclose, sig2str, str2sig.
- Se han agregado nuevas utilidades estándar rmdir, uniq, cmp, zcat, realpath, id, nohup, cksum. Se han añadido nuevas opciones en ls, grep y fgrep. Se han reescrito las utilidades ps, top, pstree, killall y pidof, que han sido trasladadas a la nueva biblioteca libtoaru_procfs, unificando el trabajo con el pseudo-sistema de archivos /proc. Se ha ampliado el intérprete de comandos esh.
- Se ha añadido la utilidad check-image para verificar la capacidad de carga de una imagen por la biblioteca gráfica y mostrar el tamaño de la imagen.
- El lenguaje de programación Kuroko se ha actualizado a la versión 1.5rc2.
- Se ha actualizado el editor de texto a la versión 3.2 Bim (github.com), creado con inspiración en Vim. En la nueva versión se ha mejorado la resaltación de sintaxis, ampliado el soporte para scripts en el lenguaje Kuroko y añadido un nuevo sistema de autocompletado de entradas.
Fuente: linux.org.ru
