4 पॉइंट द्वारा xguru 2025-09-19 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • Rust applications में आसानी से एम्बेड की जा सकने वाली scripting language और execution engine
  • बाहरी scripts के माध्यम से dynamic logic जोड़ा जा सकता है, या custom DSL बनाया जा सकता है
  • Rust के साथ उच्च compatibility रखता है, और performance, security, तथा extensibility सभी को ध्यान में रखकर architecture प्रदान करता है
  • Rust 1.66.0+ और उससे ऊपर के सभी Rust-supported platforms (WASM, no-std) पर चलता है
  • syntax JavaScript + Rust जैसी dynamic typing language है
  • performance: single-core 2.6GHz Linux VM पर 10 लाख iterations चलाने में 0.14 सेकंड लगते हैं
  • native Rust integration: Rust के functions, types, getter/setter, methods, indexer का समर्थन
  • Rust values को variables/constants के रूप में script में पास किया जा सकता है (Scope का उपयोग)
  • प्रमुख data types का समर्थन: boolean, integer, floating-point, Decimal, string, Unicode characters, array, byte array, object map
  • Rhai script में परिभाषित functions को Rust से कॉल किया जा सकता है
  • dependencies न्यूनतम (smallvec, thin-vec आदि कुछ ही libraries का उपयोग)
  • re-entrant engine: sync के जरिए Send + Sync संभव
  • AST compilation और optimization features उपलब्ध
  • plugin system और macro-आधारित API extension का समर्थन
  • function/operator overloading, function pointers, currying, closures, OOP patterns का आंशिक समर्थन
  • module system उपलब्ध, जिससे codebase को dynamically compose किया जा सकता है
  • serde serialization/deserialization support (optional)
  • debugging interface उपलब्ध

सुरक्षा और सेफ़्टी

  • Don’t Panic गारंटी: panic होने पर उसे bug माना जाता है, host system सुरक्षित रहता है
  • sandboxed execution: जब तक स्पष्ट रूप से अनुमति न दी जाए, बाहरी environment को बदला नहीं जा सकता
  • malicious attacks से सुरक्षा: stack overflow, अत्यधिक data, infinite execution को रोकता है
  • execution progress को track किया जा सकता है और मैन्युअली बंद भी किया जा सकता है
  • Miri inspection pass कर चुका है

उन लोगों के लिए जो custom language बनाना चाहते हैं

  • Rhai को DSL के रूप में उपयोग किया जा सकता है
  • loop जैसी विशिष्ट language features को disable किया जा सकता है
  • keywords/operators को disable और restrict किया जा सकता है
  • user-defined operators और syntax extensions संभव हैं

अतिरिक्त सामग्री

लाइसेंस

  • Apache 2.0 या MIT में से किसी एक को चुना जा सकता है
  • योगदान किया गया code डिफ़ॉल्ट रूप से dual license के तहत आता है

3 टिप्पणियां

 
sftblw 2025-09-19

अगर आप scripting language ढूंढ रहे हैं, तो are we game yet में एक सूची है.

https://arewegameyet.rs/ecosystem/scripting/

वह उस सूची में नहीं है, लेकिन हाल ही में GPT से पूछते हुए मुझे koto नाम की एक scripting language भी मिली. मैंने उसे बस थोड़ी देर के लिए देखा था, लेकिन वह भी अच्छी लगी.

https://koto.dev/

खोजते-खोजते मुझे roto नाम की एक और चीज़ भी मिली, हालांकि मैंने यह नहीं देखा कि यह ठीक-ठीक कैसी है, लेकिन इसे बनाने वाली जगह कुछ जानी-पहचानी लगी.

https://github.com/NLnetLabs/roto

 
coremaker 2025-09-19

wasm playground में समय मापने वाले examples हैं, लेकिन वे तेज़ नहीं लगते?

 
sftblw 2025-09-19

यह scripting उद्देश्यों के लिए बनी भाषा है, इसलिए इसका तेज़ न होना स्वाभाविक होगा।