1 puntos por GN⁺ 2025-11-02 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 2025-11-02
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

    • Mi hipótesis es que este enfoque podría ser bastante rápido. Vale la pena probarlo directamente
  • 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

    • De lo que hablas es de "GHC Haskell". Esa es la implementación principal, así que creo que tarde o temprano se resolverá
      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
    • En este hilo también hay gente intentando reproducir procesos de build antiguos para lograr el bootstrap de GHC
    • Creo que combinando el viejo Hugs con el nuevo MicroHs sería perfectamente posible. Lo que no sé es si la comunidad le dará el suficiente interés
    • Me pregunto por qué la posibilidad de bootstrapear un lenguaje es tan importante. Yo pensaba que bastaba con ver estabilidad, popularidad y madurez del toolchain
    • Me da curiosidad cómo se compila GHC sin bootstrap. ¿Hay binarios no reproducibles incluidos en el árbol? Yo he compilado GHC varias veces y nunca tuve problemas
  • 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

    • Probablemente era Hugs
  • 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

    • En Safari (iPhone) no se puede pegar en el editor
  • 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

    • GHC (Glasgow Haskell Compiler) es de hecho la implementación estándar de facto y la herramienta central para la investigación del lenguaje
      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

    • WasmGC no se lleva bien con la evaluación perezosa. Los valores lazy de Haskell siempre existen como cierres en el heap
      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
    • WasmGC todavía está en fase 1.0, así que aún no soporta toda la semántica de GC que necesitan lenguajes como C# o Go. Por ejemplo, no puede manejar interior pointers
  • 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

    • Este tutorial y recetario me pareció bueno. También vale la pena revisar joyful.com/Haskell+map.
      O simplemente leer código directamente y, cuando te trabes, pedir ayuda en la comunidad
    • Casi no hay material para gente en ese nivel. En cambio, la serie del blog Monday Morning Haskell sí trata ejemplos prácticos
      Por ejemplo, vale la pena ver este artículo
    • Puedes intentar hacer un juego de Snake paso a paso o revisar el ejemplo de snake-fury
      O también crear una app web pequeña, como en este tutorial
    • También puede servir pedirle a ChatGPT o Claude explicaciones adaptadas a tu nivel de comprensión
    • Preguntan si ya probaste Real World Haskell