GHC yang Berjalan di Browser
(discourse.haskell.org)- 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
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.getWorkerUrlataugetWorker
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
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
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
Namun, tanpa GHC pun Haskell masih cukup bisa digunakan. Misalnya MicroHs makin lama makin kuat, dan menurut saya peluang untuk bootstrap cukup besar
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
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
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
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
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
Atau cukup baca langsung kodenya, lalu kalau mentok minta bantuan komunitas
Misalnya, artikel ini patut dilihat
Atau membuat web app kecil seperti di tutorial ini juga bagus