El front-end de C++ de EDG se hace público
El front-end comercial de C/C++ de EDG, de larga trayectoria y usado internamente por muchos compiladores propietarios, IDE y herramientas de análisis estático, se ha publicado como código abierto bajo la licencia Apache 2.0 con la excepción de LLVM. Quienes comentan destacan su reputación por el cumplimiento de estándares, su capacidad para emular múltiples dialectos de compilador importantes (GCC, Clang, MSVC), sus capacidades de transformación de fuente a fuente y sus compilaciones extraordinariamente rápidas. Al mismo tiempo, señalan que la empresa EDG está en proceso de cierre, lo que plantea dudas sobre el mantenimiento a largo plazo y refuerza un cambio más amplio hacia Clang y GCC como los front-ends de C++ de código abierto dominantes.
Qué es el front-end de C++ de EDG
- Front-end comercial de compilador C/C++ de larga trayectoria, usado internamente por muchos compiladores propietarios, IDE y analizadores estáticos.
- Uno de los cuatro grandes front-ends de C++ junto con GCC, Clang y MSVC.
- Se centra en el análisis sintáctico, el análisis semántico completo y la producción de un lenguaje intermedio (IL); no es un backend optimizador completo.
- Puede actuar como generador de código fuente de C++ a C y de C++ a C++.
Código abierto, licencia y estado de la empresa
- El front-end ahora es público en GitHub con licencia Apache-2.0 + excepción de LLVM.
- Excepción de LLVM: permite distribuir binarios que incrustan partes del código sin algunas condiciones de Apache y permite combinarlo con GPLv2 al eximir las cláusulas conflictivas de patentes/indemnización.
- Varios comentarios señalan que la empresa está en proceso de cierre; abrir el código se ve en parte como una salida elegante y un puente para los clientes restantes.
Capacidades técnicas y diseño
- Puede emular muchas versiones y dialectos de GCC, Clang, MSVC y otros, incluidas sus peculiaridades y errores.
- Admite muchos estándares de C++ hasta (según se informa) casi C++23, además de algunas características de C++26; también muchos dialectos (GNU, Microsoft, el antiguo cfront, etc.).
- Ofrece un backend de transformación de fuente a fuente y herramientas para inspección de IL, además de un prelinker para la instanciación de plantillas.
- Está escrito mayormente en C portátil con estructuras de datos personalizadas, sin la biblioteca estándar de C++, compila muy rápido y produce binarios pequeños.
Papel histórico e influencia en C++
- Usado en importantes compiladores comerciales (incluidos algunos toolchains embebidos y de consolas).
- Única implementación que dio soporte completo a las antiguas plantillas
exportde C++98, influyendo en su retirada eventual. - Se utilizó para prototipar características nuevas de C++ como la reflexión estática.
Impacto en el ecosistema y perspectivas futuras
- Muchos ven el lanzamiento como “gran noticia”, pero también como el final de vida efectivo de un front-end importante, ya que la mayoría de los proveedores han pasado o están pasando a Clang/GCC.
- Algunos esperan que el código abierto le dé a EDG una “segunda vida”; otros se muestran escépticos dada la complejidad de los front-ends de C++ y la falta de una base clara de mantenedores.
- La discusión señala el descenso del número de clientes y la carga de seguir el ritmo de los estándares de C++ cada vez más extensos.
Características y estilo del código
- Estilo distintivo, más antiguo y parecido a C: comentarios entre la firma de la función y la llave, convenciones de nombres inusuales (por ejemplo, prefijos
a_/an_). - Se considera una instantánea de la historia de la ingeniería de compiladores, con una historia de commits muy larga y algunos componentes peculiares (por ejemplo, una gran FSM de Unicode construida a mano).