- El compilador Haskell GHC ahora puede ejecutarse completamente del lado del cliente dentro del navegador
- A través de la demo de Haskell Playground proporcionada, los usuarios pueden ejecutar código en el navegador sin instalaciones adicionales
- Esta función se presenta como un ejemplo del avance del backend de WebAssembly (WasM) de GHC
- En el navegador Brave, carga tras una breve pausa, y si falla la creación del web worker, el código se ejecuta en el hilo principal
- En el navegador Safari, aparece el mismo mensaje de advertencia, pero el botón Run permanece deshabilitado
Demo de GHC ejecutándose en el navegador
- GHC se ejecuta del lado del cliente dentro del navegador, lo que permite compilar y ejecutar código Haskell sin depender de un servidor
- El autor lo publicó en forma de demo de Haskell Playground
- Está previsto que más adelante se ofrezca una explicación detallada por separado
- Esta demostración se menciona como un ejemplo del nivel de avance del backend WebAssembly de GHC
Reportes de funcionamiento según el navegador
- En el navegador Brave, tras varios segundos iniciales sin respuesta, termina de cargar
- Aparece el mensaje “No se puede crear un web worker”, y se sustituye por la ejecución del código en el hilo principal
- Esto puede provocar congelamientos en la interfaz de usuario
- En Safari también aparece el mismo mensaje, pero el botón Run queda deshabilitado, por lo que no es posible ejecutar código
- El mensaje incluye una advertencia relacionada con Monaco Editor y menciona la necesidad de definir
MonacoEnvironment.getWorkerUrl o getWorker
Importancia técnica
- El hecho de que GHC pueda ejecutarse directamente en el navegador sobre WebAssembly representa un cambio que mejora la accesibilidad del entorno de desarrollo de Haskell
- El punto clave es que ahora el compilador puede funcionar en un entorno puramente cliente sin servidor
- El texto original no incluye más detalles técnicos ni comparaciones de rendimiento
1 comentarios
Opiniones de Hacker News
El título real es "GHC now runs in your browser"
Gracias a QEMU-WASM, ahora me pregunto qué será lo que ya no puede correr en el navegador
No es una crítica; de verdad me parecen muy buenos este tipo de intentos que facilitan probar y aprender un lenguaje nuevo
Da pena que todavía no haya una forma de bootstrapear por completo Haskell (o un lenguaje basado en él)
Por eso siento que es difícil usar Haskell en distribuciones de Linux de alta confianza
Ejecutarlo dentro del sandbox del navegador es una medida temporal para reducir riesgos, pero si no se puede bootstrapear desde el código fuente, cuesta confiar en el lenguaje
Pero se puede trabajar bastante con Haskell incluso sin GHC. Por ejemplo, MicroHs cada vez es más potente, y creo que tiene altas probabilidades de ser bootstrappeable
Recuerdo que hace tiempo corría un intérprete de Haskell en una HP Jornada con Jlime Linux
Durante las clases de matemáticas era cómodo para meter fórmulas, así que era mucho mejor que una calculadora científica
Corría desde una tarjeta CF, así que no debía ser tan grande como GHC, pero no recuerdo el nombre
De verdad es impresionante. Hace tiempo hice un sitio web educativo de matemáticas y arte (mathvas.com) con Haskell, y con una herramienta así habría sido mucho más fácil
Sí. También puedes ver un proyecto relacionado en haskell-miso
Para quienes no están familiarizados con Haskell, GHC es el compilador principal y entorno interactivo de Haskell
Pero los cambios de funcionalidades eran demasiado frecuentes y nunca terminó de asentarse un estilo estable, así que al final me pasé a Standard ML
(Eso fue cuando todavía había mucho movimiento alrededor de los type families)
Me pregunto si este proyecto usa WasmGC o si incluye su propio garbage collector
Se evalúan solo cuando hace falta y, para evitar llamadas duplicadas, se reemplazan por un black hole
Pero WasmGC tiene tipos fijos, así que le cuesta soportar este tipo de estructura dinámica
Se puede resolver con referencias indirectas o defunctionalization, pero el costo en rendimiento es alto
Además, Haskell también soporta finalizers, así que WasmGC tendría que manejarlos
Quisiera entender cuál es la diferencia entre esto y tecnologías como Blazor Wasm. Da la impresión de que ambas permiten escribir frontend sin JS
Estoy buscando un tutorial práctico de Haskell para gente que ya conoce programación funcional
Entiendo los conceptos de mónadas, typeclasses y HKT, pero en la práctica ni siquiera puedo hacer una app sencilla de ToDo
O simplemente leer código directamente y, cuando te trabes, pedir ayuda en la comunidad
Por ejemplo, vale la pena ver este artículo
O también crear una app web pequeña, como en este tutorial