O proxecto Kerla está a desenvolver un núcleo de sistema operativo escrito na linguaxe Rust. O novo núcleo céntrase inicialmente en proporcionar compatibilidade co núcleo de Linux a nivel ABI, o que permitirá que os ficheiros executables non modificados compilados para Linux se executen nun ambiente baseado en Kerla. O código distribúese baixo as licenzas Apache 2.0 e MIT. O proxecto está a ser desenvolvido pola desenvolvedora xaponesa Seiya Nuta, coñecida por crear o sistema operativo de micronúcleo Resea, escrito en linguaxe C.
Na súa fase actual de desenvolvemento, Kerla só pode executarse en sistemas x86_64 e implementa chamadas básicas de sistema como write, stat, mmap, pipe and poll, admite sinais, canalizacións sen nome e cambios de contexto. As chamadas como fork, wait4 e execve ofrécense para controlar os procesos. Hai soporte para tty e pseudo-terminais (pty). Os sistemas de ficheiros soportados actualmente son initramfs (utilizado para montar o sistema de ficheiros raíz), tmpfs e devfs. Ofrécese unha pila de rede con soporte para sockets TCP e UDP, implementada baseándose na biblioteca smoltcp.
O programador preparou un ambiente de arranque que se executa en QEMU ou na máquina virtual Firecracker co controlador virtio-net, ao que xa pode conectarse a través de SSH. musl úsase como biblioteca do sistema e BusyBox úsase como utilidades de usuario.
Preparouse un sistema de compilación baseado en Docker que che permite crear os teus propios initramfs de arranque co núcleo Kerla. Por separado, están a desenvolverse o shell de software nsh similar ao peixe e a pila Kazari GUI baseada no protocolo Wayland.
Usar a linguaxe Rust nun proxecto permítelle reducir o número de erros no código utilizando técnicas de programación seguras e aumentando a eficiencia na identificación de problemas cando se traballa coa memoria. Rust aplica a seguridade da memoria no momento da compilación mediante a comprobación de referencias, a propiedade do obxecto e o seguimento da vida útil do obxecto (ámbitos) e avaliando a corrección dos accesos á memoria no tempo de execución. Rust tamén ofrece protección contra desbordamentos de números enteiros, require que os valores variables sexan inicializados antes do seu uso, aplica o concepto de referencias e variables inmutables por defecto, ofrece unha forte escritura estática para minimizar os erros lóxicos e simplifica o manexo dos valores de entrada con patróns. correspondente. .
Para o desenvolvemento de compoñentes de baixo nivel, como o núcleo do SO, Rust ofrece soporte para punteiros en bruto, empaquetado de estruturas, insercións en liña do ensamblador e incrustación de ficheiros ensambladores. Para traballar sen estar vinculado á biblioteca estándar, hai paquetes de caixas separados para realizar operacións con cadeas, vectores e marcas de bits. Outra vantaxe son as ferramentas integradas para avaliar a calidade do código (linter, rust-analyzer) e crear probas unitarias que se poden executar non só en hardware real, senón tamén en QEMU.
Fonte: opennet.ru