1 puan yazan GN⁺ 2025-11-02 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2025-11-02
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

    • Benim tahminim, bu yaklaşımın oldukça hızlı olacağı yönünde. Bizzat test etmeye değer
  • 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

    • Senin kastettiğin şey GHC Haskell. O ana akım implementasyon, bence bir gün çözülür
      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
    • Bu başlıkta da insanlar GHC bootstrap'i için geçmişteki build sürecini yeniden üretmeye çalışıyor
    • Eski Hugs ile yeni MicroHs'yi birleştirince bunun gayet mümkün olduğunu düşünüyorum. Yalnız topluluğun buna o kadar ilgi gösterip göstermeyeceğinden emin değilim
    • Bir dilin bootstrap edilebilirliğinin neden bu kadar önemli olduğunu merak ediyorum. Ben daha çok kararlılık, popülerlik ve toolchain olgunluğuna baktığımı sanıyordum
    • GHC bootstrap olmadan nasıl derleniyor merak ediyorum. Ağaçta yeniden üretilemeyen binary'ler mi var? GHC'yi birkaç kez derledim, hiç sorun yaşamadım
  • 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

    • Muhtemelen Hugs idi
  • 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

    • Safari(iPhone) üzerinde editöre yapıştırma çalışmıyor
  • 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ı

    • GHC(Glasgow Haskell Compiler) fiilen standart implementasyon ve aynı zamanda dil araştırmalarının merkezindeki araç
      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

    • WasmGC, lazy evaluation ile çok iyi anlaşmıyor. Haskell'deki tembel değerler her zaman heap üzerindeki closure'lar olarak bulunur
      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
    • WasmGC henüz 1.0 aşamasında, bu yüzden C# veya Go gibi dillerin ihtiyaç duyduğu tüm GC semantiğini desteklemiyor. Örneğin interior pointer işleyemiyor
  • 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

    • Şu eğitim ve cookbook fena değildi. Ayrıca joyful.com/Haskell+map de bakmaya değer.
      Ya da doğrudan kod okuyup, takıldığında topluluktan yardım istemek de iyi bir yol
    • Bu seviyedeki kişiler için neredeyse hiç kaynak yok. Onun yerine Monday Morning Haskell blogu serisi pratik örnekler ele alıyor
      Mesela şu yazı faydalı olabilir
    • Adım adım bir Snake oyunu yapmayı deneyebilir veya snake-fury örneğine bakabilirsin
      Ya da bu eğitimde olduğu gibi küçük bir web uygulaması yapmak da iyi olabilir
    • ChatGPT ya da Claude'dan anlayış seviyene göre açıklama istemek de etkili olabilir
    • Acaba hiç Real World Haskell denedin mi diye soruyorum