12 पॉइंट द्वारा xguru 2025-05-09 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • PrimJS पर आधारित हल्का JavaScript इंजन, जिसे WebAssembly में compile किया गया है, इसलिए यह सुरक्षित और highly portable है
  • memory safety और JavaScript फीचर-सीमित करने की क्षमता देने वाली मजबूत sandbox संरचना और fail-fast दर्शन के जरिए security और scalability सुनिश्चित
  • एक ही मशीन पर सैकड़ों VM को parallel में चलाया जा सकता है, और script की memory तथा computation मात्रा (gas) की limit भी सेट की जा सकती है
  • जटिल build या FFI के बिना, एक ही .wasm फ़ाइल से लगभग हर platform में embed किया जा सकता है, और इसका आकार भी लगभग 800KB है
  • QuickJS की तुलना में अधिकतम 28% बेहतर performance, और JIT environment में native-स्तर की execution speed

Hako: छोटा, तेज और सुरक्षित JavaScript इंजन

Hako क्या है?

  • PrimJS पर आधारित portable, security-focused, high-performance JavaScript इंजन
  • Hako नाम जापानी शब्द “बॉक्स(箱)” से लिया गया है
  • ऐसा WebAssembly-आधारित इंजन जिसे कोई भी किसी भी environment में आसानी से embed कर सके, इसी उद्देश्य से डिज़ाइन किया गया है

सुरक्षा: memory safety और फीचर सीमितकरण

  • C/C++ में लिखा गया है, लेकिन WebAssembly में compile किया गया है → memory safety और execution sandbox सुनिश्चित
  • JavaScript फीचर्स को भी सीमित किया जा सकता है:
    • specific functions हटाना
    • memory allocation को असंभव बनाकर सीमित करना
    • execution time, memory usage, gas आदि पर limit
  • VMContext के जरिए malicious users की पहचान और resource control संभव
  • fail-fast रणनीति के जरिए अस्थिर या अत्यधिक resource इस्तेमाल करने वाले code को जल्दी रोक दिया जाता है

embedding की आसानी: बस एक .wasm काफ़ी है

  • Emscripten का उपयोग नहीं करता → सिर्फ modern WebAssembly runtime हो तो embed किया जा सकता है
  • अलग-अलग भाषाओं के लिए FFI wrapper की ज़रूरत नहीं → जटिल build प्रक्रिया के बिना भी उपयोग संभव
  • उदाहरण: Go में Hako embed करने का उदाहरण उपलब्ध
  • release build सिर्फ 800KB आकार की .wasm फ़ाइल से बना है

प्रदर्शन: QuickJS से तेज

  • जैसे PrimJS, QuickJS से तेज है, वैसे ही Hako भी QuickJS की तुलना में औसतन 28% performance improvement देता है
  • SIMD optimization और कुछ hot-path सुधारों से performance को अधिकतम किया गया है
  • WebAssembly के कारण performance loss नहीं होता — V8, Wasmtime, JavaScriptCore में JIT optimization की वजह से लगभग native स्तर
  • performance measurement और profiling API भी built-in हैं

सीमाएँ और आगे की योजना

  • PrimJS में इस्तेमाल होने वाले कुछ फीचर्स (template interpreter, GC snapshot) अभी पूरी तरह supported नहीं हैं
  • ByteDance का snapshot tool अभी open source नहीं हुआ है, इसलिए डेवलपर अपना स्वतंत्र tool implement कर रहे हैं
  • यह अभी शुरुआती beta चरण में है, और API/ABI stabilization के लिए feedback बहुत महत्वपूर्ण है
  • GitHub - hako

2 टिप्पणियां

 
secret3056 2025-05-09

https://github.com/fernvenue/hako-go-example
शायद यह लिंक मौजूद नहीं है। Go embedding का उदाहरण
https://gist.github.com/andrewmd5/197efb527ef40131c34ca12fd6d0a61e
लगता है।

 
xguru 2025-05-09

ओह, लगता है यह बदल गया है। मैंने इसे ठीक कर दिया है। धन्यवाद।