El compilador de C++ más viejo del mundo acaba de abrirse — y la razón es la peor posible

Código fuente de C++ en una pantalla
El front-end más antiguo del C++ ahora es público. La razón no es la que crees.
Pantalla con código fuente de C++
30 años de historia en un solo repositorio. Lo que nadie te dice sobre por qué lo liberaron.

Hay un compilador de C++ que lleva 36 horas en GitHub con 294 estrellas, 21 forks y 62.397 commits. Y el commit más antiguo no es de la década pasada: es de 1990. Nadie libera un repositorio así Unless haya una razón. Y esa razón no es la que dice el comunicado.

Qué es EDG y por qué te importa aunque no sepas qué es

EDG significa Edison Design Group. Nacío en los años 80 como una compañía de tres personas, EDG construye el front-end de C++: la pieza del compilador que entiende el lenguaje. El lexer, el parser, el análisis semántico, la resolución de plantillas. Todo lo que ocurre antes de que tu código se convierta en código máquina.

Y aquí está el dato que te va a doler: casi todos los compiladores de C++ que has usado en tu vida son el mismo compilador con distinto disfraz. Hay exactamente cuatro front-ends de C++ que importan: GCC, Clang, MSVC y EDG. Intel ICC lo usó hasta que se cambió a Clang. Green Hills lo usó. Silicon Graphics lo usó con su backend de microcode en los años 90, cuando EDG eran tres tipos en una habitación.

Hasta el IntelliSense de Visual Studio — el autocompletado que usas todos los días — funciona con EDG, no con el front-end de MSVC. Lo estás usando cada vez que escribes código en C++ en Windows y ni lo sabías.

La noticia que nadie pone de título

El 30 de septiembre el código fuente de EDG se hizo público. La licencia es Apache-2.0 WITH LLVM-exception, el mismoendants que usa Clang. El hogar es The C++ Alliance, una fundación sin fines de lucro que ya es patrocinador fiscal de Boost y tiene committers de LLVM en su personal.

Suena acriptors historia. Mira lo que dicen los propios comentarios en Hacker News, donde el post se llevó 181 puntos y 80 comentarios:

"La razón por la que el front-end se abre es que EDG está cerrando. El open sourcing es una solución provisional mientras sus clientes migran a Clang. Así que no son buenas noticias: significa que uno de los front-ends está básicamente llegando al fin de su vida."

Y otro ex-ingeniero de EDG lo remata: "No es un cambio de rumbo, es un cambio de guardián." La compañía quellev 36 años cerrando; la fundación que lo mantiene vivo.

Por qué importa: elúltimo walled garden del C++

El modelo de negocio de EDG era simple: el código era propietario y se cobraba una licencia anual. Millones de dólares al año de empresas que no querían mantener un front-end de C++ en casa. Green Hills pagó. Intel pagó. Y cuando esas empresasQuerían ahorrar dinero, se fueron a Clang.

Eso explica por qué Intel ICC tardó años en migrar a Clang: no era una mejora técnica, era una factura. Y explica por qué la liberación es urgente en vez de estrategia: si nadie lo paga, nadie lo mantiene, y un front-end de C++ sin mantenimiento es un front-end muerto en cinco años.

Pero ojo con el titular fácil. El repo tiene 94 issues abiertos en una semana. Si esto fuera un proyecto sano, no tendrías esa mezcla de "urgencia" y "proyecto en custodia".

El dato raro: 500 MB de C y ni una línea de C++ estándar

Uno de los detalles más fascinantes queiry surgió en la discusión: el front-end de C++ está escrito en C. 500 MB de C, 353 MB de C++, 1.2 MB de Python. Y el "C++" usa archivos con extensión .c heredadas de los 90, no usa la biblioteca estándar de C++, y donde otros lenguajes usan herencia EDG sigue con union { ... } variant;.

Otro ingeniero lo resume así: "Compilar EDG es extremadamente rápido. Una construcción completa desde cero en una estación de trabajo sólida moderna toma unos pocos segundos." Y añade algo que no esperabas: un solo ejecutable puede emular casi todas las versiones de MSVC, GCC y Clang. Pasas --gnu_version=80300 y se comporta como GCC 8.3.0, bugs e idiosyncrasias incluidos.

Eso último es una mina para cualquier herramienta que necesite reproducir exactamente el comportamiento de otro compilador: análisis estático, portabilidad, testing de compatibilidad.

Mi lectura: ganancia real,らない lo que parece

Me alegra que esto sea público. El análisis estático real sobre C++ es un agujero negro en el ecosistema, y el análisis de EDG apareció en el Communications of the ACM hace poco. Que 500 MB de motor de análisis estático sea auditable, forks y depurable es una victoria para toda la comunidad.

Pero esto no es "Microsoft/Google abrióndose al mundo". Es una empresa de 36 años cerrando y volcando el inventario antes de apagar las luces. **Eso no esopen source de urgencia, es custodia temporal.**

¿Qué significa para ti como dev? Si usas Clang o GCC, prácticamente nada — Intel ya te migró hace años. Si usas MSVC, tu IntelliSense sigue funcionando igual: The C++ Alliance dice que el motor, los estándares y la persona con la que hablas siguen siendo los mismos. Lo único que cambia es dónde vive el código y quién lo paga.

Y si quieres mirar dentro, el repo está en github.com/edgcpp/compiler. 36 años de historia de C++, con fecha. Eso solo ya vale el paseo.

Preguntas que me dejó la discusión

¿Puede una fundación sin fines de lucro mantener un front-end de C++ con la rigurosidad que un fabricante de compiladores comercial le daba? ¿O el modelo de "donaciones deducibles de impuestos" aguanta la complejidad de un motor de análisis estático de órdenes de magnitud? Y ¿de verdad es esto el futuro del C++, o solo un parche de 36 meses antes de que Clang lo trague?

Comparte esto con el que todavía cree que Visual Studio y su autocompletado son el mismo motor. Y si sabes cómo funciona elecosistema de licencias de compilador en tu empresa, cuéntame: ¿pagabas o pagabas y lo sabías?