منصوبے کے بارے میں

wasm-bindgen، Rust اور WebAssembly ورکنگ گروپ کا ایک پروجیکٹ ہے جو WebAssembly ماڈیولز اور JavaScript کے درمیان اعلیٰ سطحی تعامل کو آسان بناتا ہے۔ یہ Rust کوڈ کو JavaScript فعالیت درآمد کرنے اور JavaScript سے استعمال کے لیے Rust فنکشنز برآمد کرنے دیتا ہے، جن کے لیے بنڈنگز اور گلُو کوڈ تیار کیا جاتا ہے۔ انسٹالیشن cargo کے ذریعے کی جاتی ہے: `cargo install wasm-bindgen-cli`، یا ریلیز صفحے سے ڈاؤن لوڈ کر کے۔ پہلے سے تیار شدہ آرٹیفیکٹس cargo-binstall کے ذریعے بھی انسٹال کیے جا سکتے ہیں۔ README ایک بنیادی مثال دکھاتا ہے: `#[wasm_bindgen]` کے ساتھ تشریح شدہ `extern "C"` بلاک کے ذریعے Web سے `window.alert` کو Rust میں درآمد کرنا، اور Rust سے JavaScript کو ایک `greet` فنکشن برآمد کرنا۔ پھر برآمد شدہ فنکشن JavaScript سے ECMAScript ماڈیول نحو استعمال کرتے ہوئے استعمال کیا جاتا ہے۔ بیان کردہ اہم خصوصیات میں شامل ہیں: - ہلکا پھلکا آؤٹ پٹ: بنڈنگز اور گلُو صرف انہی JavaScript درآمدات کے لیے تیار کیے جاتے ہیں جو واقعی استعمال ہوں اور انہی Rust فعالیت کے لیے جو برآمد کی جائے، لہٰذا غیر استعمال شدہ APIs شامل نہیں کیے جاتے۔ - ECMAScript ماڈیولز: WebAssembly ماڈیولز کو JavaScript ماڈیولز کی طرح درآمد کیا جا سکتا ہے، اور WebAssembly/ESM انٹیگریشن کے ساتھ مستقبل کی مطابقت کا ذکر ہے۔ - Web IDL بنڈنگز تجویز کو مدنظر رکھتے ہوئے ڈیزائن کیا گیا، جس کا مقصد Rust سے تیار شدہ wasm فنکشنز اور مقامی DOM میتھڈز کے درمیان JavaScript شِمز کو ہٹانا، اور ممکنہ طور پر جامد ٹائپ چیکنگ کے ذریعے JavaScript سے تیز DOM رسائی کو ممکن بنانا ہے۔ یہ پروجیکٹ ایک گائیڈ، wasm-bindgen، js-sys، web-sys، اور wasm-bindgen-futures کے لیے API دستاویزات، ایک تعاون گائیڈ، اور ایک Discord چیٹ فراہم کرتا ہے۔ یہ MSRV پالیسی بیان کرتا ہے: crates.io پر لائبریریوں کی MSRV v1.81 ہے، جبکہ CLI ٹولز اور ان کی معاون لائبریریوں کی MSRV v1.86 ہے، اور لائبریریوں کے لیے دو سالہ MSRV پالیسی اور CLI کے لیے مختصر پالیسی کا مقصد بیان کیا گیا ہے۔ ایک MSRV تاریخ جدول 0.2.93 سے 0.2.129 تک کے ورژنز کی فہرست دیتا ہے۔ لائسنسنگ دوہری ہے: Apache License 2.0 یا MIT، صارف کی صوابدید پر۔ تعاون اسی دوہری لائسنس کے تحت قبول کیا جاتا ہے جب تک کہ بصورت دیگر بیان نہ کیا جائے۔