1 pontos por GN⁺ 2025-11-02 | 1 comentários | Compartilhar no WhatsApp
  • O compilador Haskell GHC agora pode ser executado inteiramente no lado do cliente dentro do navegador
  • Por meio da demonstração Haskell Playground fornecida, os usuários podem executar código no navegador sem instalação separada
  • Esse recurso é apresentado como um exemplo que mostra o avanço do backend WebAssembly (WasM) do GHC
  • No navegador Brave, ele carrega após uma breve pausa, e quando a criação de web worker falha, o código é executado na thread principal
  • No navegador Safari, a mesma mensagem de aviso é exibida, mas o botão Run permanece desativado

Demonstração do GHC executado no navegador

  • O GHC é executado no lado do cliente dentro do navegador, permitindo compilar e executar código Haskell sem dependência de servidor
    • O autor publicou isso no formato de uma demonstração Haskell Playground
    • Uma explicação detalhada será fornecida separadamente mais tarde
  • A apresentação é mencionada como um exemplo que mostra o nível de avanço do backend WebAssembly do GHC

Relatos de funcionamento por navegador

  • No navegador Brave, após alguns segundos iniciais sem resposta, o carregamento é concluído
    • É exibida a mensagem “não foi possível criar um web worker”, e isso é substituído pela execução do código na thread principal
    • Por causa disso, pode ocorrer travamento da UI
  • No navegador Safari, a mesma mensagem é exibida, mas o botão Run fica desativado, impossibilitando a execução do código
  • A mensagem inclui um aviso relacionado ao Monaco Editor, mencionando a necessidade de definir MonacoEnvironment.getWorkerUrl ou getWorker

Significado técnico

  • O fato de o GHC ser executado diretamente no navegador com base em WebAssembly representa uma mudança que aumenta a acessibilidade do ambiente de desenvolvimento Haskell
  • O principal avanço é ter tornado possível o funcionamento do compilador em um ambiente puramente cliente, sem servidor
  • O texto original não inclui detalhes técnicos adicionais nem comparação de desempenho

1 comentários

 
GN⁺ 2025-11-02
Comentários do Hacker News
  • O título real é “GHC now runs in your browser”

  • Graças ao QEMU-WASM, agora fico me perguntando o que ainda não roda no navegador
    Não é uma crítica; acho realmente ótimo esse tipo de iniciativa que facilita experimentar uma linguagem nova

    • Minha hipótese é que isso deve ser bem rápido. Vale a pena testar por conta própria
  • É uma pena que ainda não exista uma forma de bootstrap completo do Haskell (ou de linguagens baseadas nele)
    Por isso, tenho a impressão de que é difícil usar Haskell em distribuições Linux de alta confiança
    Rodar no sandbox do navegador é uma solução temporária que reduz o risco, mas, se não dá para fazer bootstrap a partir do código-fonte, fica difícil confiar na linguagem

    • O que você está descrevendo é o “GHC Haskell”. Essa é a implementação dominante, então imagino que isso será resolvido em algum momento
      Mas dá para trabalhar bastante com Haskell mesmo sem GHC. Por exemplo, o MicroHs está ficando cada vez mais poderoso, e acho que tem grande potencial de bootstrap
    • Nesta thread, as pessoas também estão tentando reproduzir o processo antigo de build para viabilizar o bootstrap do GHC
    • Acho que, combinando o antigo Hugs com o novo MicroHs, isso seria perfeitamente viável. Só não sei se a comunidade vai se interessar o suficiente
    • Fico curioso sobre por que a capacidade de bootstrap de uma linguagem é tão importante. Eu achava que bastava olhar estabilidade, popularidade e maturidade da toolchain
    • Fico me perguntando como o GHC é compilado sem bootstrap. Há binários não reproduzíveis incluídos na árvore? Já compilei o GHC várias vezes e nunca tive problema
  • Lembro que, antigamente, eu rodava um interpretador Haskell num HP Jornada com Jlime Linux
    Era muito prático para digitar fórmulas nas aulas de matemática, então era muito melhor do que uma calculadora científica
    Como rodava de um cartão CF, não devia ser tão grande quanto o GHC, mas não lembro o nome

    • Provavelmente era o Hugs
  • Isso é realmente impressionante. No passado, cheguei a criar um site educacional de matemática e arte (mathvas.com) em Haskell, e acho que uma ferramenta dessas teria tornado tudo muito mais fácil

    • No Safari (iPhone), não dá para colar no editor
  • Sim. Você também pode ver projetos relacionados em haskell-miso

  • Para quem não conhece bem Haskell, o GHC é o principal compilador e ambiente interativo de Haskell

    • GHC (Glasgow Haskell Compiler) é de fato a implementação padrão de fato e a principal ferramenta de pesquisa da linguagem
      Mas as mudanças de recursos eram frequentes demais, e um estilo estável nunca chegou a se consolidar, então acabei migrando para Standard ML
      (Isso foi na época em que as mudanças relacionadas a type families estavam a todo vapor)
  • Fico curioso se este projeto usa WasmGC ou se inclui seu próprio garbage collector

    • O WasmGC não combina bem com lazy evaluation. Em Haskell, valores lazy sempre existem como closures no heap
      Eles só são calculados quando necessário e são substituídos por black holes para evitar chamadas duplicadas
      Mas o WasmGC tem tipos fixos, então é difícil dar suporte a esse tipo de estrutura dinâmica
      Dá para contornar isso com referências indiretas ou defunctionalization, mas o custo de desempenho é alto
      Além disso, Haskell também oferece suporte a finalizers, então o WasmGC precisaria lidar com isso
    • O WasmGC ainda está na versão 1.0, então ainda não cobre toda a semântica de GC necessária para linguagens como C# ou Go. Por exemplo, ele não consegue lidar com interior pointers
  • Queria entender qual é a diferença entre esse tipo de recurso e tecnologias como Blazor Wasm. Ambos parecem permitir escrever frontend sem JavaScript

  • Estou procurando um tutorial prático de Haskell para quem já conhece programação funcional
    Entendo os conceitos de monads, type classes e HKT, mas ainda não consigo fazer nem um app simples de ToDo

    • Este tutorial e cookbook foram bons. E joyful.com/Haskell+map também vale consultar.
      Ou então simplesmente ler código de verdade e pedir ajuda à comunidade quando travar
    • Quase não há material para quem está nesse nível. Em compensação, a série do blog Monday Morning Haskell traz exemplos práticos
      Por exemplo, vale a pena ver este artigo
    • Você pode tentar fazer um jogo de Snake passo a passo ou consultar o exemplo snake-fury
      Ou então criar um pequeno webapp, como mostra este tutorial
    • Também é eficaz pedir ao ChatGPT ou ao Claude explicações adaptadas ao seu nível de compreensão
    • Perguntaram se você já tentou Real World Haskell