BookinglyTech News
Software

ClangIR podria compilarse por defecto, aunque aumente el tiempo de construccion

Los desarrolladores de LLVM debaten integrar ClangIR en la compilacion estandar, lo que haria de MLIR una dependencia obligatoria y duplicaria los tiempos de build.

2 min de lecturaPhoronix0 vistas

El equipo de desarrollo de LLVM ha abierto un debate para decidir si ClangIR se compila por defecto junto con Clang. La propuesta plantea un cambio estructural en el arbol de fuentes: si se aprueba, MLIR deja de ser opcional para convertirse en una dependencia implicita de cualquier build de Clang. Actualmente, ClangIR ya esta integrado en rama principal, pero requiere configuracion manual para incluirse. La idea no es activar ClangIR para la generacion de codigo, sino simplificar su disponibilidad para quienes quieran usarlo.

El argumento a favor es tecnico. ClangIR es una representacion intermedia mas cercana al AST que el LLVM IR tradicional. Al preservar mas semantica de C/C++, permite diagnosticos mas precisos, analisis estatico superior y optimizaciones que antes se perdian al bajar directo a LLVM IR. Ademas, al basarse en MLIR, facilita offload a dispositivos y mejoras en la generacion para SPIR-V o Vulkan. Es una apuesta a futuro para arquitecturas heterogeneas.

El problema inmediato es operativo. Compilar Clang con ClangIR incluido multiplica por dos o mas el tiempo de construccion del compilador. Para equipos con CI limitada o desarrolladores que reconstruyen Clang frecuentemente, esa sobrecarga es dificil de digerir. Ademas, la cobertura de pruebas continua se alargaria significativamente, lo que afecta la velocidad de iteracion del proyecto.

Otro punto de friccion es la falta de soporte para el objetivo de Microsoft. Sin un backend maduro para Windows, activar ClangIR por defecto crea una situacion asimetrica donde la herramienta no funciona consistentemente en todos los entornos de desarrollo habituales. Los desarrolladores que dependen de Windows tendrian que desactivarlo o enfrentarse a limitaciones de funcionalidad.

La propuesta actual es discreta: solo se trata de que el Makefile o CMake incluyan ClangIR en la lista de componentes a compilar. El compilador seguiria usando el pathway tradicional. Quien quiera aprovechar ClangIR deberia pasar la bandera -fclangir explicitamente. No hay ruptura de compatibilidad en el flujo de trabajo estandar, pero si en la infraestructura de construccion.

El debate en el foro de Discourse de LLVM esta activo. Los aportes centran la discusion en si la conveniencia de tenerlo listo para usar justifica el coste de construccion. Para distribuciones Linux o entornos donde el tiempo de build es un problema conocido, esta decision tendra impacto directo. Si se aprueba, las distribuciones tendran que sopesar si incluyen ClangIR en sus paquetes base o lo dejan como modulo separable.

El pull request esta abierto en el repositorio de llvm-project. La comunidad tendra que decidir si el beneficio de tener MLIR disponible por defecto compensa la penalizacion en rendimiento de construccion y la incompletitud del soporte multiplataforma.