Gleam es un lenguaje con seguridad de tipos que se dirige tanto a la máquina virtual de Erlang (BEAM) como a JavaScript. Antes de la versión 1.19.0, el compilador de Gleam generaba código fuente de Erlang legible por humanos cuando apuntaba a BEAM, que luego tenía que ser compilado nuevamente por el compilador de Erlang en bytecode BEAM. La versión 1.19.0, anunciada el 5 de octubre de 2026, reemplaza ese paso de modo que el compilador de Gleam ahora emite directamente formas abstractas de Erlang.
Este cambio proporciona dos beneficios concretos. Primero, al omitir las etapas iniciales de tokenizado y análisis del compilador de Erlang, la velocidad de compilación aumenta en general, reduciendo notablemente los tiempos de compilación de los proyectos de Gleam en BEAM. Segundo, las formas abstractas generadas conservan los metadatos de ubicación que se corresponden directamente con el código fuente original de Gleam, por lo que los informes de fallos y las trazas de pila de BEAM muestran números de línea exactos en lugar de aproximarse a la función más cercana, mejorando la experiencia de depuración.
El equipo de Gleam consideró generar bytecode BEAM directamente pero descartó la idea porque el bytecode BEAM cambia con cada lanzamiento de la máquina virtual de Erlang, lo que requeriría mantenimiento continuo para seguir esos cambios y volver a implementar décadas de optimizaciones del compilador de Erlang. Apuntar a las formas abstractas ofrece un término medio sostenible que captura la mayor parte de la ganancia de rendimiento sin esa carga, una estrategia ya utilizada por el lenguaje hermano Elixir.
