1 Punkte von GN⁺ 2025-11-02 | 1 Kommentare | Auf WhatsApp teilen
  • Der Haskell-Compiler GHC kann nun vollständig clientseitig im Browser ausgeführt werden
  • Über die bereitgestellte Haskell-Playground-Demo können Nutzer Code ohne separate Installation direkt im Browser ausführen
  • Die Funktion wird als Beispiel vorgestellt, das die Fortschritte des WebAssembly-(WasM-)Backends von GHC zeigt
  • Im Brave-Browser wird die Demo nach einer kurzen Pause geladen; wenn die Erstellung eines Web Workers fehlschlägt, wird der Code im Haupt-Thread ausgeführt
  • Im Safari-Browser erscheint dieselbe Warnmeldung, aber die Run-Schaltfläche bleibt deaktiviert

Demo: GHC im Browser

  • GHC wird clientseitig im Browser ausgeführt und kann Haskell-Code ohne Server-Abhängigkeit kompilieren und ausführen
    • Der Autor hat dies als Haskell-Playground-Demo veröffentlicht
    • Weitere Details sollen später separat bereitgestellt werden
  • Die Vorführung wird als Beispiel genannt, das den Entwicklungsstand des GHC-WebAssembly-Backends zeigt

Berichte zum Verhalten je nach Browser

  • Im Brave-Browser lädt die Demo nach einigen Sekunden ohne Reaktion
    • Es erscheint die Meldung „Web Worker konnte nicht erstellt werden“, woraufhin stattdessen der Code im Haupt-Thread ausgeführt wird
    • Dadurch kann es zu UI-Hängern kommen
  • Im Safari-Browser erscheint dieselbe Meldung, aber die Run-Schaltfläche ist deaktiviert, sodass der Code nicht ausgeführt werden kann
  • Die Meldung enthält eine Warnung zu Monaco Editor und erwähnt, dass MonacoEnvironment.getWorkerUrl oder getWorker definiert werden muss

Technische Bedeutung

  • Dass GHC auf WebAssembly-Basis direkt im Browser ausgeführt werden kann, verbessert die Zugänglichkeit der Haskell-Entwicklungsumgebung
  • Die zentrale Weiterentwicklung besteht darin, dass der Compiler ohne Server in einer rein clientseitigen Umgebung arbeiten kann
  • Der Originaltext enthält keine weiteren technischen Details oder Leistungsvergleiche

1 Kommentare

 
GN⁺ 2025-11-02
Hacker-News-Kommentare
  • Der eigentliche Titel lautet „GHC now runs in your browser“

  • Dank QEMU-WASM frage ich mich inzwischen, was eigentlich nicht im Browser läuft Das ist keine Kritik, ich finde solche Versuche wirklich gut, weil man so neue Sprachen leicht ausprobieren kann

    • Meine Hypothese ist, dass dieser Ansatz ziemlich schnell sein könnte. Es wäre es wert, das direkt zu testen
  • Schade ist, dass es noch keinen Weg gibt, Haskell (oder eine darauf basierende Sprache) vollständig zu bootstrappen Deshalb fühlt es sich so an, als sei Haskell für Linux-Distributionen mit hohem Vertrauensanspruch schwer nutzbar Das Ausführen in einer Browser-Sandbox ist ein Behelf, der das Risiko verringert, aber wenn man nicht aus dem Source bootstrappen kann, ist es schwer, der Sprache zu vertrauen

    • Was du meinst, ist „GHC Haskell“. Das ist die Mainstream-Implementierung, daher wird das wohl irgendwann gelöst werden Aber auch ohne GHC kann man mit Haskell schon ziemlich viel machen. Zum Beispiel wird MicroHs immer leistungsfähiger, und ich halte die Bootstrap-Fähigkeit dort für vielversprechend
    • Auch in diesem Thread bemühen sich Leute darum, frühere Build-Prozesse zu reproduzieren, um GHC zu bootstrappen
    • Mit dem alten Hugs und dem neuen MicroHs zusammen sollte das meiner Meinung nach machbar sein. Ich weiß nur nicht, ob sich die Community dafür genug interessieren wird
    • Ich frage mich, warum die Bootstrap-Fähigkeit einer Sprache so wichtig ist. Ich dachte immer, ich würde eher auf Stabilität, Popularität und die Reife der Toolchain achten
    • Ich frage mich, wie GHC ohne Bootstrap kompiliert wird. Enthält der Tree nicht reproduzierbare Binärdateien? Ich habe GHC schon mehrfach gebaut und nie Probleme gehabt
  • Ich erinnere mich daran, früher auf einem HP Jornada mit Jlime Linux einen Haskell-Interpreter benutzt zu haben Für den Matheunterricht war das wegen der bequemen Formeleingabe viel besser als ein Taschenrechner Es lief von einer CF-Karte, also war es wohl nicht so groß wie GHC, aber an den Namen erinnere ich mich nicht

    • Vermutlich war es Hugs
  • Wirklich beeindruckend. Ich habe einmal mit Haskell eine Webseite für Mathematik- und Kunstunterricht (mathvas.com) gebaut, und mit so einem Tool wäre das viel einfacher gewesen

    • In Safari (iPhone) kann man nichts in den Editor einfügen
  • Stimmt. Verwandte Projekte findet man auch bei haskell-miso

  • Für Leute, die mit Haskell nicht vertraut sind: GHC ist der wichtigste Compiler und die interaktive Umgebung für Haskell

    • GHC (Glasgow Haskell Compiler) ist de facto die Standardimplementierung und das zentrale Werkzeug für die Sprachforschung Allerdings änderten sich die Features zu häufig, und ein stabiler Stil hat sich nie richtig etabliert, weshalb ich schließlich zu Standard ML gewechselt bin (Das war damals in der Phase, als sich rund um Type Families besonders viel änderte)
  • Ich frage mich, ob dieses Projekt WasmGC verwendet oder stattdessen einen eigenen Garbage Collector mitbringt

    • WasmGC passt schlecht zu lazy evaluation. Faule Werte in Haskell existieren immer als Closures auf dem Heap Sie werden nur bei Bedarf ausgewertet und zur Vermeidung doppelter Ausführung durch black holes ersetzt Aber WasmGC ist statisch typisiert, daher ist es schwierig, solche dynamischen Strukturen zu unterstützen Man kann das mit indirekten Referenzen oder Defunctionalization lösen, aber das kostet Leistung Außerdem unterstützt Haskell auch finalizer, also müsste WasmGC damit umgehen können
    • WasmGC ist noch auf dem Stand 1.0 und unterstützt noch nicht die gesamte GC-Semantik, die Sprachen wie C# oder Go brauchen. Zum Beispiel kann es keine interior pointer behandeln
  • Ich würde gern wissen, was der Unterschied zwischen dieser Funktion und Technologien wie Blazor Wasm ist. Beides scheint Frontends ohne JS zu ermöglichen

  • Ich suche nach einem praktischen Haskell-Tutorial für Leute, die funktionale Programmierung bereits kennen Monaden, Typeclasses und HKT verstehe ich, aber ich kann trotzdem nicht einmal eine ToDo-App schreiben

    • Dieses Tutorial und Cookbook war ganz gut. Außerdem ist joyful.com/Haskell+map einen Blick wert. Oder man liest einfach direkt Code und holt sich Hilfe aus der Community, wenn man nicht weiterkommt
    • Für Leute auf diesem Niveau gibt es fast nichts. Stattdessen behandelt die Serie im Monday Morning Haskell Blog praktische Beispiele Zum Beispiel ist dieser Artikel ganz brauchbar
    • Man kann Schritt für Schritt ein Snake-Spiel bauen oder sich das Beispiel snake-fury ansehen Oder man baut eine kleine Web-App wie in diesem Tutorial
    • Es kann auch hilfreich sein, ChatGPT oder Claude um Erklärungen passend zum eigenen Verständnisstand zu bitten
    • Es wird gefragt, ob du Real World Haskell schon ausprobiert hast