1 पॉइंट द्वारा GN⁺ 2025-11-02 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Haskell compiler GHC अब ब्राउज़र के भीतर पूरी तरह client-side पर चल सकता है
  • दिए गए Haskell Playground demo के ज़रिए उपयोगकर्ता बिना किसी अलग installation के ब्राउज़र में कोड चला सकते हैं
  • इसे GHC के WebAssembly(WasM) backend की प्रगति दिखाने वाले एक उदाहरण के रूप में पेश किया गया है
  • Brave browser में यह थोड़ी देर रुकने के बाद लोड होता है, और web worker बनाने में विफल होने पर code main thread पर चलता है
  • Safari browser में वही warning message दिखता है, लेकिन Run button निष्क्रिय ही रहता है

ब्राउज़र में चलने वाले GHC का डेमो

  • GHC ब्राउज़र के भीतर client-side पर चलता है, और server पर निर्भर हुए बिना Haskell code को compile और run कर सकता है
    • लेखक ने इसे Haskell Playground demo के रूप में सार्वजनिक किया है
    • विस्तृत विवरण बाद में अलग से दिए जाने की योजना है
  • इस प्रदर्शन को GHC WebAssembly backend की प्रगति के स्तर को दिखाने वाले उदाहरण के रूप में बताया गया है

ब्राउज़र के अनुसार व्यवहार रिपोर्ट

  • Brave browser में शुरुआत के कुछ सेकंड तक कोई प्रतिक्रिया नहीं आती, फिर लोड पूरा होता है
    • “web worker नहीं बनाया जा सकता” जैसा संदेश दिखता है, और इसकी जगह main thread पर code execution किया जाता है
    • इसके कारण UI के फ्रीज़ होने की समस्या हो सकती है
  • Safari browser में भी वही संदेश दिखता है, लेकिन Run button निष्क्रिय होने से code चल नहीं पाता
  • संदेश में Monaco Editor से जुड़ी warning शामिल है, और MonacoEnvironment.getWorkerUrl या getWorker को define करने की आवश्यकता का उल्लेख है

तकनीकी महत्व

  • GHC का WebAssembly के आधार पर सीधे ब्राउज़र में चलना Haskell development environment की accessibility बढ़ाने वाला बदलाव है
  • बिना server के शुद्ध client environment में compiler का चल पाना इसका मुख्य तकनीकी विकास है
  • मूल लेख में अतिरिक्त तकनीकी विवरण या performance comparison शामिल नहीं हैं

1 टिप्पणियां

 
GN⁺ 2025-11-02
Hacker News टिप्पणियाँ
  • असली शीर्षक “GHC now runs in your browser” है

  • QEMU-WASM की वजह से अब यह जिज्ञासा होती है कि ऐसा क्या है जो ब्राउज़र में नहीं चल सकता
    यह आलोचना नहीं है, बल्कि नई भाषाएँ आसानी से सीखने के लिए ऐसे प्रयोग वाकई अच्छे लगते हैं

    • मेरा अनुमान है कि यह तरीका काफी तेज़ होगा। इसे खुद टेस्ट करके देखना चाहिए
  • अफ़सोस है कि अभी तक Haskell (या उससे जुड़ी भाषाओं) को पूरी तरह bootstrap करने का तरीका नहीं है
    इसलिए high-trust Linux distribution में Haskell का इस्तेमाल करना मुश्किल लगता है
    ब्राउज़र sandbox में चलाना जोखिम कम करने का एक अस्थायी उपाय है, लेकिन अगर source से bootstrap नहीं हो सकता तो भाषा पर भरोसा करना कठिन है

    • तुम जिस बात की बात कर रहे हो, वह “GHC Haskell” है। वही मुख्यधारा implementation है, इसलिए मुझे लगता है कि यह कभी न कभी हल हो जाएगा
      लेकिन GHC के बिना भी Haskell को काफ़ी हद तक इस्तेमाल किया जा सकता है। उदाहरण के लिए MicroHs लगातार मज़बूत हो रहा है, और मुझे लगता है कि उसमें bootstrap होने की संभावना ज़्यादा है
    • इस थ्रेड में भी लोग GHC bootstrap के लिए पुराने build process को फिर से तैयार करने की कोशिश कर रहे हैं
    • पुराना Hugs और नया MicroHs मिलाकर यह संभव लग रहा है। बस पता नहीं कि community इस पर उतनी दिलचस्पी लेगी या नहीं
    • मुझे समझ नहीं आता कि किसी भाषा की bootstrap होने की क्षमता इतनी महत्वपूर्ण क्यों है। मैं तो सोचता था कि stability, popularity, और toolchain maturity जैसी चीज़ें ज़्यादा मायने रखती हैं
    • मुझे जिज्ञासा है कि GHC bootstrap के बिना compile कैसे होता है। क्या tree में ऐसे binary शामिल हैं जिन्हें दोबारा बनाया नहीं जा सकता? मैंने GHC कई बार build किया है और कोई समस्या नहीं आई
  • मुझे याद है कि मैंने पहले HP Jornada पर Jlime Linux के साथ Haskell interpreter चलाया था
    गणित की क्लास में formula टाइप करना आसान था, इसलिए यह scientific calculator से कहीं बेहतर था
    यह CF card से चलता था, इसलिए शायद GHC जितना बड़ा नहीं रहा होगा, लेकिन नाम याद नहीं है

    • शायद वह Hugs रहा होगा
  • यह सचमुच प्रभावशाली है। मैंने पहले Haskell से गणित और कला शिक्षा के लिए एक वेबसाइट (mathvas.com) बनाई थी, और अगर उस समय ऐसा टूल होता तो काम बहुत आसान हो जाता

    • Safari(iPhone) में editor पर paste काम नहीं करता
  • हाँ। संबंधित प्रोजेक्ट haskell-miso में भी देखे जा सकते हैं

  • जो लोग Haskell से परिचित नहीं हैं, उनके लिए बता दूँ कि GHC Haskell का मुख्य compiler और interactive environment है

    • GHC(Glasgow Haskell Compiler) वास्तव में de facto standard implementation है और language research का मुख्य tool भी है
      लेकिन इसमें feature changes बहुत तेज़ी से होते रहे, और स्थिर शैली बन नहीं पाई, इसलिए मैं अंततः Standard ML पर चला गया
      (वह समय type family से जुड़े बदलावों का था)
  • जिज्ञासा है कि यह प्रोजेक्ट WasmGC का इस्तेमाल करता है, या फिर अपना garbage collector साथ लाता है

    • WasmGC का lazy evaluation के साथ मेल अच्छा नहीं है। Haskell में lazy values हमेशा heap पर closure के रूप में मौजूद रहती हैं
      ज़रूरत पड़ने पर ही उनका मूल्यांकन होता है, और दोबारा कॉल से बचाने के लिए उन्हें black hole से बदल दिया जाता है
      लेकिन WasmGC में type static होते हैं, इसलिए ऐसी dynamic संरचना को support करना मुश्किल है
      indirect reference या defunctionalization से इसका हल निकाला जा सकता है, लेकिन performance cost काफ़ी है
      और Haskell finalizer भी support करता है, इसलिए WasmGC को यह भी संभालना होगा
    • WasmGC अभी 1.0 चरण में है, इसलिए यह C# या Go जैसी भाषाओं के लिए ज़रूरी GC semantics पूरी तरह support नहीं करता। उदाहरण के लिए यह interior pointer नहीं संभाल सकता
  • मैं जानना चाहता हूँ कि इस फीचर और Blazor Wasm जैसी तकनीक में क्या अंतर है। दोनों ही शायद JS के बिना frontend लिखने देते हैं

  • मैं ऐसे लोगों के लिए व्यावहारिक Haskell tutorial खोज रहा हूँ जिन्हें functional programming पहले से आती है
    monad, typeclass, और HKT की अवधारणा समझता हूँ, लेकिन फिर भी एक साधारण ToDo app तक नहीं बना पा रहा

    • यह tutorial और cookbook अच्छा लगा था। साथ ही joyful.com/Haskell+map भी देखने लायक है।
      नहीं तो बस सीधे code पढ़ो, और जहाँ अटक जाओ वहाँ community से मदद लो
    • इस स्तर के लोगों के लिए सामग्री लगभग नहीं के बराबर है। फिर भी Monday Morning Haskell ब्लॉग सीरीज़ में व्यावहारिक उदाहरण मिलते हैं
      उदाहरण के लिए यह लेख उपयोगी हो सकता है
    • चरण-दर-चरण Snake गेम बनाकर देख सकते हो, या snake-fury उदाहरण देख सकते हो
      या फिर इस tutorial की तरह एक छोटा web app बनाना भी अच्छा रहेगा
    • ChatGPT या Claude से तुम्हारी समझ के स्तर के मुताबिक़ समझाने को कहना भी प्रभावी है
    • क्या तुमने Real World Haskell आज़माया है?