- Haskell derleyicisi GHC artık tarayıcı içinde tamamen istemci tarafında çalışabiliyor
- Sunulan Haskell Playground demosu sayesinde kullanıcılar ayrı bir kurulum olmadan tarayıcıda kod çalıştırabiliyor
- Bu özellik, GHC'nin WebAssembly (WasM) arka ucundaki ilerlemeyi gösteren bir örnek olarak tanıtılıyor
- Brave tarayıcısında kısa bir duraksamadan sonra yükleniyor ve web worker oluşturma başarısız olursa kod ana iş parçacığında çalışıyor
- Safari tarayıcısında aynı uyarı mesajı gösteriliyor ancak Run düğmesi devre dışı kalıyor
Tarayıcıda çalışan GHC demosu
- GHC, tarayıcı içinde istemci tarafında çalışıyor ve sunucuya bağımlı olmadan Haskell kodunu derleyip çalıştırabiliyor
- Yazar bunu bir Haskell Playground demosu olarak yayımladı
- Ayrıntılı açıklamaların daha sonra ayrıca paylaşılması planlanıyor
- Bu gösterim, GHC WebAssembly arka ucunun ne kadar ilerlediğini gösteren bir örnek olarak anılıyor
Tarayıcılara göre davranış raporu
- Brave tarayıcısında başlangıçta birkaç saniyelik yanıtsızlık sonrası yükleme tamamlanıyor
- “Web worker oluşturulamıyor” mesajı gösteriliyor ve bunun yerine kod ana iş parçacığında çalıştırılıyor
- Bu nedenle arayüz donması yaşanabiliyor
- Safari tarayıcısında da aynı mesaj gösteriliyor ancak Run düğmesi devre dışı olduğu için kod çalıştırılamıyor
- Mesajda Monaco Editor ile ilgili uyarı da yer alıyor ve
MonacoEnvironment.getWorkerUrl veya getWorker tanımlanması gerektiğinden bahsediliyor
Teknik anlamı
- GHC'nin WebAssembly tabanlı olarak doğrudan tarayıcıda çalışması, Haskell geliştirme ortamına erişimi artıran bir değişim
- Sunucu olmadan tamamen istemci ortamında derleyicinin çalışabilmesi temel ilerleme noktası olarak öne çıkıyor
- Orijinal metinde ek teknik ayrıntılar veya performans karşılaştırmaları yer almıyor
1 yorum
Hacker News görüşleri
Asıl başlık aslında "GHC now runs in your browser"
QEMU-WASM sayesinde artık tarayıcıda çalışmayacak ne kaldı ki diye merak ediyorum
Bu bir eleştiri değil; yeni bir dili kolayca deneyip öğrenmeye imkân veren bu tür girişimlerin gerçekten harika olduğunu düşünüyorum
Hâlâ Haskell'i (veya onun temel aldığı dili) tam anlamıyla bootstrap edecek bir yolun olmaması üzücü
Bu yüzden yüksek güvenilirlik hedefleyen Linux dağıtımlarında Haskell kullanmanın zor olduğunu düşünüyorum
Tarayıcı sandbox'ında çalıştırmak riski azaltan geçici bir çözüm ama kaynaktan bootstrap yapılamıyorsa dile güvenmek zorlaşıyor
Ama GHC olmadan da Haskell ile epey şey yapılabiliyor. Örneğin MicroHs giderek güçleniyor ve bootstrap edilebilirlik açısından umut verici görünüyor
Eskiden HP Jornada üzerinde Jlime Linux ile bir Haskell yorumlayıcısı çalıştırdığımı hatırlıyorum
Matematik dersinde formül girmek çok rahat olduğu için mühendislik tipi hesap makinesinden çok daha iyiydi
CF karttan çalışıyordu, yani GHC kadar büyük değildi herhâlde ama adını hatırlamıyorum
Gerçekten etkileyici. Bir zamanlar Haskell ile matematik ve sanat eğitimi için bir web sitesi (mathvas.com) yapmıştım; böyle araçlar olsaydı işim çok daha kolay olurdu
Evet. İlgili projelere haskell-miso içinde de bakılabilir
Haskell'e aşina olmayanlar için söyleyeyim, GHC Haskell'in başlıca derleyicisi ve etkileşimli ortamı
Ama özellik değişimleri fazla sık oluyordu ve istikrarlı bir tarz oturmadığı için sonunda Standard ML'ye geçtim
(O dönem type family ile ilgili değişikliklerin çok yoğun olduğu bir zamandı)
Bu projenin WasmGC kullanıp kullanmadığını, yoksa kendi garbage collector'ını mı içerdiğini merak ediyorum
Yalnızca gerektiğinde hesaplanırlar ve tekrar hesaplamayı önlemek için black hole ile değiştirilirler
Ancak WasmGC'nin tipleri statik olduğundan bu tür dinamik yapıları desteklemesi zor
Dolaylı referanslar veya defunctionalization ile aşılabilir ama performans maliyeti yüksek
Ayrıca Haskell finalizer da destekliyor; dolayısıyla WasmGC'nin bunu da ele alması gerekir
Bununla Blazor Wasm gibi teknolojiler arasındaki farkın ne olduğunu merak ediyorum. İkisi de JS olmadan frontend yazmayı mümkün kılıyor gibi görünüyor
Zaten fonksiyonel programlama bilen kişiler için pratik bir Haskell eğitimi arıyorum
Monad, typeclass ve HKT kavramlarını anlıyorum ama yine de gerçek bir ToDo uygulaması bile yazamıyorum
Ya da doğrudan kod okuyup, takıldığında topluluktan yardım istemek de iyi bir yol
Mesela şu yazı faydalı olabilir
Ya da bu eğitimde olduğu gibi küçük bir web uygulaması yapmak da iyi olabilir