Comprobador de préstamos implementado en la interfaz de GCC con el compilador Rust

Se ha propuesto una serie de parches que mejoran el soporte del lenguaje Rust en el frontend de gccrs para su inclusión en la rama GCC 15. El cambio más notable es el soporte para un verificador de préstamos, que se basa en el componente Polonius, que está siendo desarrollado por el equipo central de Rust como la próxima generación del verificador de préstamos.

La implementación propuesta de Borrow checker se diferencia en que está escrita en el lenguaje Rust y proporciona capacidades avanzadas de verificación de código, permitiendo en algunos casos considerar seguro código que hasta ahora requería marcar con la palabra clave Unsafe debido a las limitaciones de la implementación predeterminada de Borrow checker.

La solución preparada para GCC tiene limitaciones:

  • Polonius es consciente de situaciones en las que algún código realmente existente en los proyectos conduce a un crecimiento exponencial en la complejidad del análisis.
  • En el caso de GCC, el compilador gccrs actualmente requiere que el compilador Rust complete la fase de arranque (esta limitación se eliminará en el futuro).

Una implementación completa de ensamblaje autónomo implica una puesta en marcha en dos etapas, donde GCC primero construirá gccrs sin el verificador de préstamos, y luego construirá la implementación mencionada del verificador de préstamos, escrita en el lenguaje Rust, usando una versión reducida del compilador y considerando el código como condicionalmente confiable (es decir, sin realizar la verificación de préstamos). Después de construir el verificador de préstamos, se realizará otra reconstrucción del compilador, pero esta vez con verificaciones de préstamos.

Fuente: opennet.ru

Añadir un comentario