El proyecto Kerla desarrolla un núcleo compatible con Linux en el lenguaje Rust.

En el marco del proyecto Kerla se está desarrollando el núcleo de un sistema operativo, escrito en el lenguaje Rust. Este nuevo núcleo está diseñado inicialmente para garantizar la compatibilidad con el núcleo de Linux a nivel de ABI, lo que permitirá ejecutar en un entorno basado en Kerla archivos ejecutables no modificados, compilados para Linux. El código se distribuye bajo las licencias Apache 2.0 y MIT. El proyecto es desarrollado por el programador japonés Seiya Nuta, conocido por crear el sistema operativo de micro núcleo Resea, escrito en lenguaje C.

En la actual etapa de desarrollo, Kerla solo puede funcionar en sistemas con arquitectura x86_64 y implementa llamadas al sistema básico, como write, stat, mmap, pipe y poll, soporta señales, canales anónimos y cambios de contexto. Para la gestión de procesos, se proporcionan llamadas como fork, wait4 y execve. Hay soporte para tty y pseudoterminales (pty). Por el momento, las únicas sistemas de archivos soportados son initramfs (utilizado para montar el sistema de archivos raíz), tmpfs y devfs. Se incluye una pila de red con soporte para sockets TCP y UDP, implementada sobre la biblioteca smoltcp.

El desarrollador ha preparado un entorno de arranque que se ejecuta en QEMU o en una máquina virtual Firecracker con el controlador virtio-net, al que ya se puede conectar por SSH. Se utiliza musl como biblioteca del sistema y BusyBox como utilidades de usuario.

El proyecto Kerla desarrolla un núcleo compatible con Linux en el lenguaje Rust.

Sobre Docker se ha preparado un sistema de construcción que permite crear sus propios initramfs de arranque con el núcleo de Kerla. También se están desarrollando por separado un shell similar a fish llamado nsh y una pila de GUI Kazari basada en el protocolo Wayland.

El proyecto Kerla desarrolla un núcleo compatible con Linux en el lenguaje Rust.

El uso del lenguaje Rust en el proyecto permite reducir la cantidad de errores en el código gracias a la aplicación de técnicas de programación segura y al aumento de la eficiencia en la detección de problemas relacionados con la memoria. La seguridad en el manejo de la memoria se garantiza en Rust durante la compilación a través de la verificación de referencias, el seguimiento de la propiedad de los objetos y la consideración del tiempo de vida de los objetos (ámbito), así como mediante la evaluación de la corrección del acceso a la memoria en tiempo de ejecución. Además, Rust ofrece herramientas para proteger contra desbordamientos de enteros, exige la inicialización obligatoria de los valores de las variables antes de su uso, emplea el concepto de inmutabilidad (immutable) para referencias y variables por defecto, y proporciona una fuerte tipificación estática para minimizar errores lógicos, facilitando el manejo de valores de entrada gracias a herramientas de coincidencia de patrones.

Para el desarrollo de componentes de bajo nivel, como el núcleo del sistema operativo, Rust proporciona soporte para punteros raw, empaquetado de estructuras, inserciones inline en ensamblador e incrustación de archivos en ensamblador. Para trabajar sin depender de la biblioteca estándar, hay crates independientes para realizar operaciones con cadenas, vectores y banderas de bits. Entre las ventajas también se destacan las herramientas integradas para evaluar la calidad del código (linter, rust-analyzer) y la creación de pruebas unitarias que se pueden ejecutar no solo en hardware real, sino también en QEMU.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster