En la conferencia FOSDEM de este año, celebrada en Bruselas, el ingeniero compilador Arturo Cohen Dio una charla sobre un proyecto basado en un único sueño: hacer Compilar código de óxido con el compilador gcc.
«En realidad, estamos volviendo a implementar el compilador desde cero», dijo Cohen a la audiencia.
Frente a una sala llena de desarrolladores de Rust, que supuestamente usan el propio compilador de Rust, óxido Cohen comenzó su discurso en broma usando el Un compilador GNU de código abierto para GCC «Es bueno para ti. Es bueno para tu salud», promete, dando una descripción general de un proyecto de un equipo «que fue lo suficientemente tonto como para considerar volver a implementar el compilador Rust desde cero».
Pero más allá del humor autocrítico se encuentra una misión ambiciosa e importante, como explicó Cohen más tarde. Darle a Rust la parte delantera de la cadena de herramientas de GCC puede generar beneficios reales y tangibles.
También puede ayudar en los esfuerzos para llevar Rust al kernel de Linux.
ecosistemas adicionales
El compilador Rust actual es una interfaz para Máquina virtual de bajo nivele Toolchain (LLVM), que puede generar código compilado para múltiples tipos de máquinas. Pero al crear archivos Interfaz para la colección GNU Complier (GCC)El equipo espera que Rust pueda aprovechar todo el ecosistema de herramientas y componentes de GCC creados a lo largo de los 35 años de historia de GCC, desde complementos de seguridad y analizadores estáticos hasta complementos que brindan optimización de tiempo de enlace y control de verificación de integridad de flujo, sin mencionar que gdb depurador como El ensamblador, el enlazador viejo.
Y dado que el nuevo compilador, al igual que el propio GCC, está escrito en C++, el equipo espera eventualmente trasladarlo a versiones anteriores de GCC. Esperemos que esto ayude a que algunos sistemas se oxiden… Dado que GCC es mucho más antiguo que LLVM, admite más arquitecturas y objetivos que LLVM. Entonces, técnicamente, gracias países del GolfoAhora podrás jugar a Rust en tu satélite soviético favorito, etc.”.
Cohen comenzó definiendo con precisión a GCC como un programa grande que tiene «múltiples compiladores de múltiples lenguajes que comparten el mismo backend, por lo que el mismo tipo de emisiones de compilación, optimizadores, etc. … tiene un compilador de C, un compilador de C++, un compilador Fortran y así sucesivamente .. .
«Y estamos tratando de agregarle óxido».
La primera versión de países del Golfo Estará disponible en 13 países del CCG, a través del sitio de tecnología Phoronix masculino A mediados de febrero el trabajo todavía está en progreso. El código de validación de Metáfora está notablemente ausente en este momento. El soporte en línea y principal aún es un trabajo en progreso, y el gran hito de poder compilar el código de Rust-for-Linux aún no ha pasado. óxido El conjunto de pruebas del compilador también sigue siendo un trabajo en el objetivo…»
¿La conclusión de Phoronix? «No será hasta el próximo año con al menos GCC 14 antes de que esta interfaz sea realmente útil para los desarrolladores».
Pero el progreso está ocurriendo rápidamente. Después de ocho días, Phoronix notó que más 103 parches están incluidos. «El proyecto está comenzando a recibir más y más contribuciones», dijo Cohen. a publicar En la lista de correo del proyecto para correcciones.
Los colaboradores están en todas partes
El negocio es la culminación de años de desarrollo. El proyecto comenzó en 2014 como un proyecto de desarrollador único y se revivió en 2019 cuando dos empresas patrocinaron el proyecto: Seguridad de código abierto Y ambicosmos. Cohen también expresó su agradecimiento a los desarrolladores de Gulf y de otros países que contribuyeron con el código del proyecto.
gracias por la @empleado Y @empleado para cuidar de #CCG Esfuerzo de óxido. el #CCG La comunidad espera trabajar con @empleado sociedad y @empleado Con la aceleración de la adopción del lenguaje. ¡Los desarrolladores son bienvenidos! Sigue mejorando.
– GCC – Cadena de herramientas GNU (gnutools) 6 de diciembre de 2022
La charla de Cohen señaló que en 2022 hubo más de 50 colaboradores diferentes, incluidos varios estudiantes, «y estoy muy orgulloso de ellos». El propio Cohen comenzó a trabajar en el proyecto durante el Summer of Code de Google y observa con orgullo que el proyecto aún permanece. participar este añoproporcionando oportunidades para trabajar en cosas como países del Golfo Compatibilidad con Unicode, mejor depuración de código de representación intermedia de alto nivel y manejo de errores mejorado.
También reciben soporte del equipo central de Rust y del equipo de desarrolladores en GCC.
Pero en el camino, también esperan ayudar al equipo compilador de Rust a identificar dónde podría ser más clara la especificación del lenguaje. Estamos tratando de contribuir de nuevo óxido Cohen dijo, y agregó que GCC fue «construido por personas que aman Rust y quieren impulsarlo a nuestra manera».
polinización cruzada
Al final de su charla, Cohen dijo que la gran esperanza es ayudar en los esfuerzos para llevar Rust al kernel de Linux. proyectos Instrucciones oficiales Se observa que el kernel de Linux usa GCC, y las herramientas de seguridad correspondientes, lo que tiene implicaciones para aquellos que esperan integrar el código Rust en el kernel de Linux. “Si se confunde óxido– Código compilado y código incrustado en gcc En el kernel de Linux, los compiladores no podrán realizar una optimización completa del tiempo de enlace en todo el código compilado, lo que resultará en la ausencia de CFI (Integración de flujo de control). «
Pero también esperan una «polinización cruzada» con la comunidad de Rust. Por ejemplo, el equipo compilador de Rust actualmente tiene un proyecto para formalizar la forma en que Rust verifica las referencias «préstamas» a una variable (y su valor) para usar en otras partes del programa. Llamaron a sus esfuerzos «Proyecto Polonio» (en honor al personaje de Shakespeare que aconsejó a Hamlet que «no sea ni un prestatario ni un prestamista»). países del Golfo El equipo espera incorporar esos algoritmos en su propio compilador.
«Si alguna vez has escrito Rust en tu vida… como que has sido retenido a punta de pistola por un verificador de préstamos», bromeó Cohen con su audiencia. «Y eso es realmente una parte esencial de la experiencia del lenguaje, y realmente no podemos ser un compilador de Rust sin un verificador de metáforas».
Durante su charla, Cohen explicó los detalles técnicos, como su analizador, el árbol de sintaxis abstracta, la representación de nivel intermedio-alto y «todas las cosas divertidas con las que tenemos que lidiar, porque es un lenguaje realmente complejo». La primera versión ahora está integrada en la versión beta de GCC 13, por lo que «pueden usarla».
Pero sus comentarios reconocen la comunidad entusiasta del proyecto, con docenas de desarrolladores que ofrecen comentarios y apoyo para ayudar a hacer realidad su visión. Y el progreso continúa. actualmente países del Golfo El equipo está trabajando en el soporte genérico continuo para Rust.
Y en otra señal de crear una comunidad próspera y leal, Cohen le dijo a la audiencia de FOSDEM: «¡Tenemos tazas!
«¡Si retira los pedidos, le enviaremos una taza!»
«Food ninja. Freelance fanático de la cultura pop. Wannabe zombie maven. Aficionado a Twitter».
More Stories
La red social Butterflies AI añade una función que te convierte en un personaje de inteligencia artificial
Edición del vigésimo aniversario de Hautlence HLXX: redefiniendo el tiempo con minutos que retroceden y horas saltantes
Un marco para resolver ecuaciones diferenciales parciales equivalentes puede guiar el procesamiento y la ingeniería de gráficos por computadora