1 poin oleh GN⁺ 2025-11-02 | 1 komentar | Bagikan ke WhatsApp
  • Kompiler Haskell GHC kini dapat berjalan sepenuhnya di sisi klien langsung di dalam browser
  • Melalui demo Haskell Playground yang disediakan, pengguna dapat menjalankan kode di browser tanpa instalasi tambahan
  • Fitur ini diperkenalkan sebagai contoh yang menunjukkan kemajuan backend WebAssembly (WasM) milik GHC
  • Di browser Brave, halaman dimuat setelah sempat berhenti sejenak, dan saat pembuatan web worker gagal, kode dijalankan di thread utama
  • Di browser Safari, pesan peringatan yang sama ditampilkan, tetapi tombol Run tetap nonaktif

Demo GHC yang Berjalan di Browser

  • GHC berjalan di sisi klien di dalam browser, sehingga dapat mengompilasi dan menjalankan kode Haskell tanpa ketergantungan pada server
    • Penulis merilisnya dalam bentuk demo Haskell Playground
    • Penjelasan lebih rinci akan disediakan secara terpisah nanti
  • Demo ini disebut sebagai contoh yang menunjukkan tingkat kemajuan backend WebAssembly GHC
Iklan

Laporan perilaku per browser

  • Di browser Brave, setelah beberapa detik awal tidak merespons, pemuatan selesai
    • Muncul pesan “tidak dapat membuat web worker”, lalu dialihkan ke eksekusi kode di thread utama
    • Akibatnya, UI dapat mengalami freeze
  • Di browser Safari, pesan yang sama juga ditampilkan, tetapi tombol Run nonaktif sehingga kode tidak bisa dijalankan
  • Pesan tersebut mencakup peringatan terkait Monaco Editor, dan menyebut perlunya mendefinisikan MonacoEnvironment.getWorkerUrl atau getWorker

Makna teknis

  • Fakta bahwa GHC dapat berjalan langsung di browser berbasis WebAssembly merupakan perubahan yang meningkatkan aksesibilitas lingkungan pengembangan Haskell
  • Poin perkembangan utamanya adalah kini kompiler dapat beroperasi di lingkungan klien murni tanpa server
  • Teks asli tidak memuat rincian teknis tambahan atau perbandingan performa

1 komentar

 
GN⁺ 2025-11-02
Komentar Hacker News
  • Judul aslinya adalah “GHC now runs in your browser”

  • Berkat QEMU-WASM, sekarang jadi penasaran apa lagi yang belum bisa dijalankan di browser
    Bukan kritik, justru menurut saya upaya seperti ini sangat bagus karena memudahkan orang mencoba mempelajari bahasa baru

    • Hipotesis saya, pendekatan ini akan cukup cepat. Layak diuji langsung
  • Sayang sekali masih belum ada cara untuk sepenuhnya mem-bootstrap Haskell (atau bahasa turunannya)
    Karena itu, rasanya sulit memakai Haskell di distribusi Linux yang sangat menekankan kepercayaan
    Menjalankannya di sandbox browser memang solusi sementara untuk mengurangi risiko, tetapi kalau tidak bisa bootstrap dari source, sulit untuk benar-benar memercayai bahasanya

    • Yang kamu maksud adalah “GHC Haskell”. Itu implementasi arus utama, jadi saya rasa suatu saat akan terselesaikan
      Namun, tanpa GHC pun Haskell masih cukup bisa digunakan. Misalnya MicroHs makin lama makin kuat, dan menurut saya peluang untuk bootstrap cukup besar
    • Di thread ini juga ada orang-orang yang sedang berusaha mereproduksi proses build lama untuk mem-bootstrap GHC
    • Menurut saya, menggabungkan Hugs lama dan MicroHs baru seharusnya cukup memungkinkan. Hanya saja saya tidak tahu apakah komunitas akan cukup peduli
    • Saya penasaran kenapa kemampuan bootstrap sebuah bahasa dianggap begitu penting. Saya kira yang biasanya dilihat itu stabilitas, popularitas, dan kematangan toolchain
    • Saya penasaran bagaimana GHC dikompilasi tanpa bootstrap. Apakah ada binary yang tidak bisa direproduksi di dalam tree? Saya sudah build GHC beberapa kali dan tidak pernah ada masalah
  • Saya ingat dulu pernah menjalankan interpreter Haskell di HP Jornada dengan Jlime Linux
    Saat pelajaran matematika, memasukkan rumus jadi mudah sehingga jauh lebih bagus daripada kalkulator saintifik
    Karena dijalankan dari kartu CF, ukurannya pasti tidak sebesar GHC, tapi saya tidak ingat namanya

  • Benar-benar mengesankan. Dulu saya pernah membuat situs web pendidikan matematika dan seni (mathvas.com) dengan Haskell, dan kalau alat seperti ini sudah ada saat itu, pasti akan jauh lebih mudah

    • Di Safari(iPhone), tidak bisa menempel ke editor
  • Betul. Proyek terkait juga bisa dilihat di haskell-miso

  • Untuk orang yang belum akrab dengan Haskell, GHC adalah kompiler utama sekaligus lingkungan interaktif untuk Haskell

    • GHC (Glasgow Haskell Compiler) pada praktiknya adalah implementasi standar de facto sekaligus alat utama untuk riset bahasa
      Namun, perubahan fiturnya terlalu sering, dan gaya yang stabil tidak pernah benar-benar mapan, jadi pada akhirnya saya pindah ke Standard ML
      (Waktu itu perubahan terkait type family sedang sangat aktif)
  • Saya penasaran apakah proyek ini menggunakan WasmGC, atau justru menyertakan garbage collector sendiri

    • WasmGC kurang cocok dengan lazy evaluation. Nilai malas di Haskell selalu hadir sebagai closure di heap
      Nilainya hanya dihitung saat diperlukan, lalu diganti dengan black hole untuk mencegah pemanggilan ganda
      Namun WasmGC bertipe statis, jadi sulit mendukung struktur dinamis seperti ini
      Ini bisa diatasi dengan indirect reference atau defunctionalization, tetapi biaya performanya besar
      Selain itu, Haskell juga mendukung finalizer, jadi WasmGC harus bisa menanganinya
    • WasmGC masih di tahap 1.0, jadi belum mendukung semua semantik GC yang dibutuhkan bahasa seperti C# atau Go. Misalnya, ia belum bisa menangani interior pointer
  • Saya ingin tahu apa bedanya dengan fitur seperti Blazor Wasm. Keduanya tampaknya sama-sama memungkinkan penulisan frontend tanpa JS

  • Saya sedang mencari tutorial Haskell yang praktis untuk orang yang sudah paham functional programming
    Saya mengerti konsep monad, typeclass, dan HKT, tetapi tetap tidak bisa membuat aplikasi ToDo sederhana sekalipun

    • Tutorial dan cookbook ini cukup bagus. Juga joyful.com/Haskell+map layak dilihat.
      Atau cukup baca langsung kodenya, lalu kalau mentok minta bantuan komunitas
    • Hampir tidak ada materi untuk orang di level seperti ini. Sebagai gantinya, seri blog Monday Morning Haskell membahas contoh-contoh praktis
      Misalnya, artikel ini patut dilihat
    • Kamu bisa mencoba membuat game Snake langkah demi langkah, atau melihat contoh snake-fury
      Atau membuat web app kecil seperti di tutorial ini juga bagus
    • Meminta ChatGPT atau Claude memberi penjelasan yang disesuaikan dengan tingkat pemahamanmu juga efektif
    • Ada yang bertanya apakah kamu sudah mencoba Real World Haskell