Un compilador de Rust para Morello lleva la seguridad de memoria al código inseguro

Fuentes: Rust for Morello: Always-On Memory Safety, Even in Unsafe Code

Investigadores de la Universidad de Kent presentan un compilador de Rust dirigido al procesador prototipo Morello de ARM, una arquitectura experimental que aplica seguridad de memoria mediante capabilities (punteros gruesos dotados de permisos y límites). El trabajo, publicado como artículo de experiencia en la 37ª European Conference on Object-Oriented Programming (ECOOP 2023), combina los dos modelos de protección: las garantías estáticas del sistema de tipos de Rust y las comprobaciones dinámicas siempre activas del hardware.

Rust garantiza memoria segura en todo código bien tipado, pero permite bloques marcados como unsafe donde se omite esa comprobación para interoperar con componentes en otros lenguajes o ganar rendimiento. Morello, en su modo Purecap, verifica cada acceso a memoria y detiene el programa ante cualquier violación, por lo que también cubre el código unsafe.

Los autores evalúan el coste de esa protección permanente con 19 crates del repositorio oficial de Rust, que suman 870 benchmarks. La penalización media de rendimiento medida es del 39 %. Incluyen además una versión portada de la biblioteca estándar de Rust adaptada a capabilities, un análisis sobre la elisión de comprobaciones de límites en hardware con capabilities y una comparativa entre los modos Hybrid y Purecap de Morello.

El código fuente se publica en GitHub bajo el repositorio kent-weak-memory/rust. La investigación fue financiada por el programa DSbD Software Ecosystem del EPSRC británico.