Elm 0.19.2 mejora la velocidad de compilación
(elm-lang.org)- Elm 0.19.2 es el primer paso en una serie de lanzamientos pequeños para incorporar mejoras del compilador antes de llegar a Elm 1.0
- En una gran base de código de Elm, la compilación desde cero se midió en 5.7 segundos y las compilaciones incrementales posteriores en menos de 350 ms, reduciendo la posibilidad de interrumpir el flujo de concentración durante el desarrollo
- Esta mejora se enfocó en reducir las asignaciones durante el parsing; en un experimento con 850 mil líneas se observó una reducción del 20% en la cantidad copiada por el GC, una disminución del 10% en el uso máximo de memoria y una mejora del 7% en la velocidad total
- En pruebas con proyectos reales, el grado de mejora varió; en un caso de compilación desde cero de 351 módulos, bajó de 4.981 segundos a 2.595 segundos, volviéndose 1.9 veces más rápida
- Las ideas de rendimiento y lenguaje surgidas del trabajo en Acadia se incorporarán progresivamente en futuros lanzamientos sin romper la compatibilidad, y tras los últimos ajustes el plan es llegar a Elm 1.0
Compilación más rápida en Elm 0.19.2
- Elm 0.19.2 es el primer lanzamiento que incorpora en Elm, en unidades pequeñas, las mejoras acumuladas del compilador
- Un compilador rápido reduce las situaciones en las que los desarrolladores cambian a una pestaña del navegador y pierden la concentración
- Si la compilación incremental tarda menos de 400 ms, casi no queda margen para pasar a otra tarea
- El rendimiento con una base de 850 mil líneas de Elm es el siguiente
- Compilación desde cero: 5.7 segundos
- Compilación incremental: menos de 350 ms
- El cambio real se concentró en reducir las asignaciones durante el parsing
- 20% menos cantidad copiada por el GC
- 10% menos uso máximo de memoria
- 7% más de velocidad total
- En programas de más de 500 mil líneas se pueden esperar mejoras moderadas, y en programas más pequeños el compilador de Elm sigue siendo muy rápido
- En pruebas en entornos reales, el grado de mejora varió según el proyecto
- Algunos proyectos mejoraron levemente
- En el caso de compilar 351 módulos desde cero, bajó de 4.981 segundos a 2.595 segundos, una mejora de 1.9 veces
- La nueva versión se puede obtener en el lanzamiento de Elm compiler 0.19.2
Próximos lanzamientos rumbo a Elm 1.0
- Las ideas obtenidas del trabajo de compilador relacionado con bases de datos llamado Acadia también se aprovecharán en Elm
- Acadia se encuentra actualmente en alfa privada
- La difusión pública está prevista para finales de este año
- Las ideas que se incorporarán a Elm incluyen tanto mejoras de rendimiento como funcionalidades del lenguaje
- Ej.: un parser más rápido
- Ej.: tipos
equatable,hashable
- Estos cambios se incorporarán como una serie de lanzamientos pequeños que no rompen la compatibilidad, para integrarlos de forma natural en Elm
- En la etapa final de ajustes, el plan es pasar a Elm 1.0
- Quienes estén conociendo Elm por primera vez pueden empezar con los ejemplos en línea y la guía
- Como Elm 0.19.2 es un lanzamiento de parche, los proyectos existentes pueden descargar la nueva versión y usarla de inmediato
2 comentarios
Opiniones en Hacker News
Hoy en día veo a Elm más como un lenguaje de investigación con mucha influencia
Tiene un enfoque muy claro, no hay roadmap público ni soporte oficial, y el liderazgo parece tener muy poco interés en construir una comunidad o un equipo core
Aun así, la experiencia de trabajo es realmente buena, y como resultado han surgido varios forks y proyectos derivados. En la reciente conferencia de Gleam, Louis Pilfold bromeó diciendo que “cada usuario de Elm mantiene su propio compilador”, y en la práctica hay al menos 6, con 2 más anunciados el mes pasado
Me alegra que Evan avance hacia 1.0, y ojalá después de llamar a Elm “algo terminado”, uno de los proyectos sucesores pueda asumir el trabajo difícil de unificar forks y hacer crecer la comunidad
Personalmente, si la próxima vez busco algo parecido a Elm, pienso mirar Gleam + Lustre. La combinación de una comunidad y mantenedores que se preocupan por el diseño se ve buena, y funciona tanto en frontend como en backend
En algún momento se promovió con mucho entusiasmo, había muchos posts de blog y charlas, y bastante entusiasmo y adopción
Luego el autor prácticamente desapareció y el proyecto se detuvo
Claro, es su proyecto y tiene derecho a hacerlo, pero creo que debería haber establecido mejor las expectativas desde el principio. La difusión activa ayudó a expandir las ideas, pero también hizo que los desarrolladores sintieran que de pronto los habían abandonado
Lo segundo mejor es la filosofía de “si compila, funciona”. Sinceramente, en buena parte de Rust se puede obtener una sensación parecida. Se siente menos a Haskell, pero tiene algo de la sombra cálida de sus ancestros funcionales
Elm es un buen lenguaje, pero Evan realmente no parece interesado en construir algo verdaderamente útil, y la gestión general del lenguaje es un desastre
En 2023 escribí sobre por qué todavía usaba Elm
https://taylor.town/elm-2023
Ahora, en 2026, sigo usando Elm por las mismas razones :)
Además, Claude parece encajar muy bien con Elm
https://taylor.town/diggit-000
Hace unos 2 años hice un experimento de vibe coding con ChatGPT para crear un juego de Snake para el navegador en Elm, un lenguaje que me encanta
En ese momento era bastante tosco, y concluí que los modelos de lenguaje grandes podrían matar a Elm
Ahora uso Elm en producción, y los modelos de lenguaje grandes han mejorado mucho. De hecho, creo que Elm podría aumentar su adopción porque ahora es un lenguaje ideal para los modelos de lenguaje grandes. Es más simple que la mayoría de los lenguajes, estable, y trae dentro del lenguaje una arquitectura con opiniones fuertes, por lo que las bases de código terminan pareciéndose mucho entre sí
También estoy creando más cosas en Rust y leyendo más documentación de Rust. Los modelos de lenguaje grandes no deben ser una excusa para no aprender aquello para lo que se usan; si se usan así, eres un mal ingeniero
Los modelos de lenguaje grandes te dan tiempo para investigar y aprender de modo que puedas mantener los resultados que recibes. Si entiendes el problema, también puedes escribir mejores prompts
Al final depende de cuánto Elm haya en los datos de entrenamiento y en el RLHF. Estoy de acuerdo en que los frameworks o lenguajes estructurados hacen que las bases de código se parezcan más y sean más fáciles de generar
Pero eso por sí solo no alcanza, y normalmente la adopción por parte de desarrolladores es un debate mucho más complejo en sí mismo
Maneja Python muy bien, así que me pareció extraño, y Elm está entre los lenguajes modernos más estables. Tan estable que la gente se queja de que no cambia. Dicho eso, la última vez que lo intenté fue hace alrededor de un año, así que supongo que ahora estará mejor
¿Ya se resolvieron las limitaciones relacionadas con JavaScript? Si mal no recuerdo, para integrarse con JavaScript había que usar el mecanismo de Ports de Elm, y creo que no permitían escribir wrappers directamente
También recuerdo que hubo controversia cuando alguien hizo un fork para poder escribir wrappers de JavaScript directos o usar FFI
Es una decisión intencional, y es muy probable que se mantenga hasta 1.0 y también después
No sabía que este proyecto seguía vivo. No lo digo con sarcasmo, pero pensé que ya se había terminado.
Así que estaba muerto, y ahora básicamente acaba de revivir. Tengo entendido que, mientras tanto, la comunidad se marchitó bastante.
Era una funcionalidad muy popular, pero se eliminó porque al creador del lenguaje no le gustaba, aunque la comunidad insistió mucho en que se mantuviera.
Técnicamente quizá fue la decisión correcta, pero socialmente fue muy impopular y probablemente fue una mala decisión.
No lo conocía antes de entrar, pero como tenía experiencia con React, Redux y demás, lo aprendí rápido.
La comunidad de Elm llamaría a esto una funcionalidad. ¿Cuánto código React escrito hace 6 a 8 años funciona hoy de forma completamente idéntica en el toolchain actual de React?
Los valores son totalmente distintos. El buen código React de 2026 se parece al código Elm que compila desde 2016.
Nunca usé Elm más allá de tutoriales, pero hace poco hice una app full-stack en Gleam y usé principalmente agentes de programación. Al principio controlé la estructura del código con bastante rigidez, y ese proceso encajó bastante bien.
Me interesa más lo que viene después de Elm 0.19 que Elm 1.0. La 0.19 fue la versión que bloqueó todos los módulos nativos que no estuvieran oficialmente aprobados por el autor de Elm, y para mí eso marcó prácticamente el final de Elm.
Es difícil imaginar un anuncio peor para el camino hacia 1.0. ¿A quién le importa? Si no hay soporte de localización ni de accesibilidad, no tiene sentido llamar 1.0 listo para producción a un framework de UI.
Creo que limitar el alcance con el que los colaboradores de terceros pueden conectar APIs del navegador mató el impulso de Elm, salvo para proyectos de juguete.
Ahora parece más un sandbox para que Evan juegue con ideas de compiladores que algo para producción.
La localización la manejamos con un gran record por idioma, que pasamos a cada parte de la app que usa cadenas. Para plurales o casos especiales de cada idioma, se pueden poner funciones simples dentro del record, lo cual es muy práctico.
La accesibilidad la logramos combinando buen HTML, ports y, para casos complejos como un typeahead de autocompletado, web components.
Por otro lado, pasar 7 años sin nada, sacar una pequeña mejora de rendimiento del compilador y llamarla “el camino hacia 1.0” se siente raro. Sin mala intención, pero ¿para qué? Ya estaba muerto, el duelo terminó y todos se fueron hace mucho.
No creo que a mucha gente le importe hasta que salga una versión realmente sorprendente.
Parece que Evan está señalando algo, pero todos están mirando solo el dedo. Creo que en realidad esto no va tanto de Elm en sí, sino de preparar Acadia.
En su charla Economics of Programming Languages https://www.youtube.com/watch?v=XZ3w_jec1v8 mostró un poco de lo que ha estado trabajando durante los últimos 7 años. Es un lenguaje de consultas que aplica ideas funcionales.
Señala los límites donde la información de tipos suele romperse en las apps web: entre el lenguaje y el almacenamiento, y entre el almacenamiento y el transporte.
¿Qué se obtiene si se puede preservar la información de tipos a través de esos límites? Una de las respuestas que dio es migraciones más fáciles. En vez de escribir SQL a mano, se podría manejar mediante diferencias de tipos.
Así que creo que la pregunta correcta es si, al ver los cambios que entran en Elm, podemos inferir cómo será Acadia. ¿Qué aportará la compilación incremental a un lenguaje de consultas?
Por muy buenas que sean las ideas, si Arcadia no tiene un modelo de desarrollo centrado en la comunidad y más orientado al futuro, nadie lo adoptará. En el mejor de los casos será “el proyecto que inspiró a XYZ”.
Evan puede pensar que esto es la próxima gran cosa, y quizá tenga razón, pero no sé si el mundo después de Elm estará dispuesto a escucharlo lo suficiente.
¿Revirtieron aquello de que ciertas funciones del lenguaje solo podían ser usadas por el equipo de Elm? Eso parecía una decisión capaz de matar el lenguaje.
¿Es correcto pensar que Elm perdió mucho impulso? Ya casi no se discute ni siquiera en HN, y me pregunto si esa es una de las razones de los grandes intervalos entre versiones y noticias.
Viendo los intervalos entre versiones, la 0.19.2, “Faster builds, and the Road to Elm 1.0”, es de julio de 2026, y la 0.19.1, “Friendly syntax hints, faster builds”, es de octubre de 2019.
Opiniones en Lobste.rs
¡Wow! Elm 0.19.1 salió el 21 de octubre de 2019, así que ya pasaron casi 7 años, y además esa había sido la última noticia pública sobre el desarrollo de Elm
Da bastante gusto ver novedades del proyecto
Usé Elm en un proyecto personal y la pasé muy bien, pero desde afuera la comunidad se veía algo tranquila. Es una noticia muy emocionante
Elm hizo que el desarrollo web fuera divertido
Tengo ganas de ver qué traerá la 1.0
Es una sorpresa realmente agradable
Siempre me gustó la estabilidad de Elm, y parece que la 1.0 tampoco traerá cambios radicales, algo que personalmente veo como un buen rumbo
Si
==y otros ya no aceptan cualquier tipo, habrá bastante código Elm que modificar. Me da curiosidad cómo será el proceso de actualizaciónMe alegra ver una actualización de Elm
Es un poco inusual que un lenguaje de programación pase años sin ninguna actualización. Entiendo las razones, pero la percepción pública tiene sus rarezas
Me gusta esta noticia
De vez en cuando vuelvo a mirar Elm como una buena pausa de la locura del desarrollo frontend moderno
Tuve la oportunidad de ver la charla de Evan en ZuriHac 2026, y me sorprendió mucho que insinuara que venía un nuevo lanzamiento de Elm
Espero que el video se publique pronto, pero parecía haber entendido que una estrategia orientada a la estabilidad no encaja bien con la obsesión de esta industria por avanzar rápido. Según lo entendí, Elm podría avanzar en etapas más pequeñas y rápidas. Me entusiasma, y esa charla hizo que extrañara mucho Elm
Me da curiosidad cómo manejará Elm funciones más visibles como tipos
equatableyhashableUna de las decisiones de diseño polémicas del lenguaje es evitar funcionalidades más potentes del sistema de tipos al estilo Haskell, como las type classes. Personalmente, siempre me resultó incómodo que ni siquiera los tipos personalizados con un orden natural y bien definido se puedan usar como claves de diccionarios. Aun así, en general es una buena noticia que el trabajo en Elm continúe
Por la forma en que está redactado el post del blog, imagino que será algo como agregar algunas variables de tipo restringidas nuevas además de las variables de tipo restringidas existentes, es decir,
number,appendable,comparableycompappend