En GCC aprobaron la implementación de RUST (gccrs)

julio 12, 2022 , 0 Comments

Hace poco se dio a conocer la noticia de que el Comité Directivo de GCC ha aprobado la inclusión de la implementación gccrs (GCC Rust) del compilador Rust en el núcleo de GCC.

Con ello GCC (GNU Compiler Collection) ya tiene un backend para Rust, mediante el proyecto llamado rustc_codegen_gcc fundado por Antoni Boucher. Todavía se describe como un trabajo en progreso, pero se fusionó con el repositorio principal de Rust en septiembre de 2021.

Para quienes desconocen del lenguaje Rust, deben saber que este se centra en la gestión segura de la memoria y proporciona los medios para lograr un alto paralelismo de trabajos. El manejo seguro de la memoria, que excluye errores como el acceso a un área de memoria después de liberarla, la desreferenciación de punteros nulos y el desbordamiento de los límites del búfer, se logra en Rust en tiempo de compilación a través de la verificación de referencias, el seguimiento de la propiedad del objeto, la contabilidad de la vida útil de los objetos (alcances) y evaluar la corrección del acceso a la memoria durante la ejecución del código.

Rust también brinda protección contra desbordamientos de enteros, requiere que las variables se inicialicen antes de su uso, maneja mejor los errores en la biblioteca estándar, aplica el concepto de referencias y variables inmutables de forma predeterminada.

Después de integrar la interfaz, en GCC estándar se puede usar para compilar programas Rust sin la necesidad de instalar el compilador rustc creado con desarrollos LLVM.

Desde noviembre de 2020, he trabajado a tiempo completo en el front-end de Rust para GCC, gracias a Open Source Security, Inc y Embecosm. Como resultado, estoy escribiendo a esta lista de correo para buscar comentarios de la experiencia colectiva aquí temprano para planificar un camino para subir el front-end en GCC.

La importancia de este proyecto es su importancia para Linux, generalmente construido con GCC, donde los planes para permitir que Rust se use junto con C para el código del kernel, por razones de seguridad de la memoria, avanzan constantemente.

Esto significa que el compilador de Rust, rustc, se puede usar con el backend de GCC, siendo el backend el generador de código que admite más arquitecturas de CPU que LLVM, el compilador de backend habitual de Rust, aunque existen limitaciones, como requerir una versión parcheada de GCC.

La alternativa es tener una cadena de herramientas GCC completa. En enero de 2021, Open Source Security, Inc, creadores de una versión reforzada del kernel de Linux llamada Grsecurity, dijo que financiaría un «esfuerzo de desarrollo público» de una interfaz de GCC para Rust, con el argumento de que se mejoró la seguridad al no tener que mezclar diferentes compiladores.

Desde mi perspectiva como líder en este front-end, actualmente estamos bajo un fuerte desarrollo, así que esto significa una buena cantidad de código rotando todavía, y no veo que esto cambie hasta que podamos compilar con éxito el libcore caja a finales de este año. Aunque me encantaría vernos fusionado en GCC 13, quiero asegurarme de que este proyecto sea un éxito para todos, y esto podría significar retroceder a la próxima ventana de lanzamiento para asegurarme de que esto sea manejable para producir un front-end de calidad para sentarse junto a los demás .

La compañía citó un documento que muestra «cómo la seguridad general de un entorno de ejecución puede reducirse mediante la introducción de código escrito en Rust o en otro lenguaje donde el compilador no proporciona la misma seguridad de nivel binario».

Se alienta a los desarrolladores de gccrs a comenzar a trabajar con los equipos de revisión y lanzamiento de cambios de GCC para finalizar y aprobar parches en términos de cumplir con los requisitos técnicos para el código que se agregará a GCC.

Suponiendo que el desarrollo de gccrs continúe según lo planeado y no se identifiquen problemas imprevistos, el front-end del lenguaje Rust se integrará en el lanzamiento de GCC 13 programado para mayo del próximo año. La implementación de Rust en GCC 13 estará en estado beta, aún no habilitada de forma predeterminada.

Finalmente si estás interesado en poder conocer más al respecto sobre el proyecto, puedes consultar los detalles en el siguiente enlace.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.