منصوبے کے بارے میں
Wago مکمل طور پر Go میں لکھا گیا ایک WebAssembly رن ٹائم ہے۔ Wasm کی تشریح (interpreting) کرنے کے بجائے، یہ ماڈیولز کو براہ راست نیٹو مشین کوڈ میں کمپائل کرتا ہے، تاکہ اسے CGO کے بغیر Go پروگراموں میں شامل کیا جا سکے، جس سے عام Go بلڈز اور کراس کمپائلیشن سادہ رہتا ہے۔ یہ پروجیکٹ خود کو تیز، مختصر اور قابل توسیع (extensible) کے طور پر پیش کرتا ہے، اور واضح کرتا ہے کہ یہ ابھی بیٹا مرحلے میں ہے، جس کا مطلب ہے کہ APIs اور تیار کردہ .wago آرٹفیکٹس تبدیل ہو سکتے ہیں۔
پروجیکٹ کی نمایاں خصوصیات:
- خالص Go: ایمبیڈنگ کے لیے C ٹول چین کی ضرورت نہیں ہے۔
- معیارات پر توجہ: کہا گیا ہے کہ رن ٹائم آفیشل WebAssembly ٹیسٹ سویٹ، فزنگ اور حقیقی دنیا کے کورپورا پاس کرتا ہے۔
- قابل توسیع: WASI، Component Model اور دیگر ہوسٹ صلاحیتیں کور رن ٹائم سے باہر پلگ انز کے طور پر موجود ہیں۔
- اسٹینڈ الون ایگزیکیوٹیبلز: ایک .wasm فائل کو ایک چھوٹی نیٹو بائنری میں کمپائل کیا جا سکتا ہے، جو README کے مطابق CLI ٹولز کے لیے مفید ہے۔
- پلیٹ فارمز: amd64 اور arm64 پر Linux، macOS اور Windows، جس میں بیک اینڈ کے لحاظ سے WebAssembly فیچرز کی دستیابی مختلف ہے۔ ایک فیچر میٹرکس فائل درست کوریج کی دستاویز فراہم کرتی ہے۔
انسٹالیشن
macOS اور Linux پر دستاویزات میں دی گئی ایک لائن کی کمانڈ انسٹالر اسکرپٹ ڈاؤن لوڈ کرتی ہے اور اسے sh میں بھیجتی ہے؛ Windows پر، PowerShell صارفین ایک مساوی irm کمانڈ چلاتے ہیں۔ یہ ایک مینیجر انسٹال کرتے ہیں، جو پھر رن ٹائم انسٹال کرتا ہے۔ ڈاکومنٹیشن سائٹ متبادل انسٹالیشن طریقوں، ریلیز چینلز اور سورس بلڈز کا احاطہ کرتی ہے۔
ماڈیولز چلانا
انسٹالیشن کے بعد ایک ماڈیول کو براہ راست چلایا جا سکتا ہے: ایک چھوٹے Fibonacci Wasm فائل کو آرگیومنٹ کے ساتھ چلانے سے متوقع نتیجہ ظاہر ہوتا ہے۔ اسٹینڈ الون بائنری بنانے کے لیے، compile سب کمانڈ ایک .wasm ان پٹ اور آؤٹ پٹ پاتھ لیتی ہے، اور resulting ایگزیکیوٹیبل وہی آرگیومنٹ قبول کرتا ہے۔
Go سے Wago کا استعمال
Go ڈویلپرز go get github.com/wago-org/wago کے ذریعے ماڈیول شامل کرتے ہیں۔ ریپوزٹری میں نمبر شدہ مثالیں موجود ہیں، بشمول ایک ٹائپڈ رن ٹائم مثال جو ایک ماڈیول کو کمپائل کرتی ہے، ایک انسٹنس بناتی ہے اور ایک ایکسپورٹڈ فنکشن کو کال کرتی ہے۔ ایک علیحدہ ڈاکومنٹیشن گائیڈ Go میں Wago کی ایمبیڈنگ کا احاطہ کرتی ہے۔
ہوسٹ صلاحیتیں اور پلگ انز
ہوسٹ انٹیگریشنز کو جان بوجھ کر کور رن ٹائم سے باہر رکھا گیا ہے۔ ایک پروجیکٹ کو init کمانڈ کے ساتھ شروع کیا جا سکتا ہے، اور WASI کے نفاذ جیسے پلگ انز نام کے ذریعے شامل کیے جاتے ہیں، مثال کے طور پر wago-org/wasi۔ دستیاب پلگ انز دیکھنے کے لیے ایک پلگ ان رجسٹری سائٹ فراہم کی گئی ہے۔
کارکردگی
README کے مطابق Wago چند کلو بائٹس RAM استعمال کرتا ہے اور دعویٰ کرتا ہے کہ اس کا کمپائل ٹائم wazero کے مقابلے میں تقریباً تین گنا تیز اور ایگزیکیوشن تقریباً 40 فیصد تیز ہے۔ پروجیکٹ بینچ مارکس پیج اور ریپوزٹری میں ایک بینچ مارک ڈائریکٹری کا لنک دیتا ہے۔ یہ اعداد و شمار مینٹینرز کی اپنی پیمائش ہیں اور ان پر بھروسہ کرنے سے پہلے اپنے ورک لوڈز کے ساتھ چیک کیے جانے چاہئیں۔
پروجیکٹ کی حیثیت اور لائسنسنگ
Wago کو Apache License 2.0 کے تحت ریلیز کیا گیا ہے اور اسے مفت تیار کیا گیا ہے، جس میں اسپانسرشپ کی حوصلہ افزائی کی گئی ہے۔ ریپوزٹری میں ڈاکومنٹیشن، مثالیں، فیچر میٹرکس، آرکیٹیکچر دستاویز، روڈ میپ، کنٹری بیوشن گائیڈ لائنز اور ایشو ٹریکر شامل ہیں۔
مجموعی طور پر، Wago ان Go ڈویلپرز کو ٹارگٹ کرتا ہے جو C ڈیپینڈینسی کے بغیر WebAssembly چلانا یا ایمبیڈ کرنا چاہتے ہیں، اور جو ایک چھوٹے رن ٹائم کور کو ترجیح دیتے ہیں جس کے ہوسٹ فیچرز پلگ انز کے ذریعے شامل کیے جاتے ہیں۔ اس کی بیٹا حیثیت اور یہ حقیقت کہ بینچ مارک نمبرز پروجیکٹ کی اپنی طرف سے ہیں، اسے اپنانے سے پہلے غور طلب اہم نکات ہیں۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.