Mozilla, Fastly, Intel اور Red Hat WebAssembly کو عالمگیر استعمال کے پلیٹ فارم کے طور پر فروغ دیتے ہیں۔

موزیلا، فاسٹلی، انٹیل اور ریڈ ہیٹ متحد ٹیکنالوجیز تیار کرنے میں اس کی کوششیں جو WebAssembly کو کسی بھی انفراسٹرکچر، آپریٹنگ سسٹم، یا ڈیوائس میں محفوظ کوڈ کے نفاذ کے لیے ایک عالمگیر پلیٹ فارم بنانے میں مدد کرتی ہیں۔ رن ٹائم اور کمپائلرز کی مشترکہ ترقی کے لیے ایک کمیونٹی تشکیل دی گئی ہے جو نہ صرف ویب براؤزرز میں WebAssembly کے استعمال کی اجازت دیتی ہے۔ بائٹ کوڈ الائنس.

WebAssembly فارمیٹ میں ڈیلیور کیے جانے والے پورٹیبل پروگرام بنانے کے لیے جو براؤزر سے باہر چل سکتے ہیں، ہم تجویز کرتے ہیں کہ API استعمال کریں۔ میں تھا (WebAssembly سسٹم انٹرفیس)، جو آپریٹنگ سسٹم کے ساتھ براہ راست تعامل کے لیے سافٹ ویئر انٹرفیس فراہم کرتا ہے (فائلوں، ساکٹ وغیرہ کے ساتھ کام کرنے کے لیے POSIX API)۔ WASI استعمال کرنے والے ایپلی کیشنز کے ایگزیکیوشن ماڈل کی ایک مخصوص خصوصیت یہ ہے کہ وہ مرکزی سسٹم سے الگ تھلگ ہونے کے لیے سینڈ باکس کے ماحول میں چلتی ہیں اور ہر ایک وسائل (فائل، ڈائریکٹریز، ساکٹ، سسٹم کالز) کے ساتھ کارروائیوں کے لیے قابلیت کے انتظام پر مبنی سیکیورٹی میکانزم کا استعمال کرتی ہیں۔ ، وغیرہ) درخواست کو مناسب اجازتیں دی جانی چاہئیں (صرف اعلان کردہ فعالیت تک رسائی فراہم کی جاتی ہے)۔

اس میں سے ایک اہداف تخلیق کردہ اتحاد جدید ماڈیولر ایپلی کیشنز کو بڑی تعداد میں انحصار کے ساتھ تقسیم کرنے کے مسئلے کا حل ہے۔ ایسی ایپلی کیشنز میں، ہر انحصار کمزوریوں یا حملوں کا ممکنہ ذریعہ ہو سکتا ہے۔ انحصار کو کنٹرول کرنا آپ کو اس سے وابستہ تمام ایپلیکیشنز کا کنٹرول حاصل کرنے کی اجازت دیتا ہے۔ ایپلیکیشن پر اعتماد کا مطلب خود بخود تمام انحصار پر اعتماد ہوتا ہے، لیکن انحصار اکثر فریق ثالث ٹیموں کے ذریعے تیار اور برقرار رکھا جاتا ہے جن کی سرگرمیوں کو کنٹرول نہیں کیا جا سکتا۔ بائٹ کوڈ الائنس کے ممبران WebAssembly ایپلی کیشنز کے محفوظ طریقے سے عمل درآمد کے لیے ایک جامع حل فراہم کرنے کا ارادہ رکھتے ہیں جو کہ فطری طور پر قابل اعتبار نہیں ہیں۔

تحفظ کے لیے، نینو پروسیس کے تصور کو استعمال کرنے کی تجویز دی گئی ہے، جس میں ہر انحصار ماڈیول کو الگ الگ الگ الگ WebAssembly ماڈیول میں الگ کیا جاتا ہے، جس کے اختیارات صرف اس ماڈیول کے سلسلے میں مقرر کیے جاتے ہیں (مثال کے طور پر، سٹرنگز کی پروسیسنگ کے لیے لائبریری نہیں کرے گی۔ نیٹ ورک ساکٹ یا فائل کھولنے کے قابل ہو)۔ عمل کی علیحدگی کے برعکس، WebAssembly ہینڈلرز ہلکے ہوتے ہیں اور انہیں تقریباً کسی اضافی وسائل کی ضرورت نہیں ہوتی ہے - ہینڈلرز کے درمیان تعامل عام فنکشنز کو کال کرنے سے زیادہ سست نہیں ہوتا ہے۔ علیحدگی نہ صرف انفرادی ماڈیولز کی سطح پر، بلکہ ماڈیولز کے گروپس کی سطح پر بھی کی جا سکتی ہے، مثال کے طور پر، یادداشت کے مشترکہ علاقوں کے ساتھ کام کرنے کی ضرورت ہے۔

درخواست کردہ اختیارات کا تعین خود انحصاری کی سطح پر کیا جا سکتا ہے، اور پیرنٹ ماڈیولز (WASI میں وسائل ایک خاص قسم کی فائل ڈسکرپٹر - صلاحیت کے ساتھ منسلک ہیں) کے ذریعے زنجیر کے ساتھ انحصار کے حوالے کیا جا سکتا ہے۔ مثال کے طور پر، ایک ماڈیول کو ایک مخصوص ڈائریکٹری اور سسٹم کالز تک رسائی کی صلاحیت سونپی جا سکتی ہے، اور اگر ماڈیول کے ترقیاتی بنیادی ڈھانچے سے سمجھوتہ کیا جاتا ہے یا کسی خطرے کی نشاندہی کی جاتی ہے، حملے کے دوران، رسائی صرف ان وسائل تک محدود ہو گی۔ ماڈیول تخلیق کاروں کے ذریعہ وسائل کے اعلانات مشکوک سرگرمی کا اشارہ ہو سکتے ہیں، جیسے کہ جب ٹیکسٹ پروسیسنگ ماڈیول نیٹ ورک کنکشن کھولنے کی اجازت کی درخواست کرتا ہے۔ ابتدائی طور پر سیٹ کی گئی اجازتوں کی جانچ پڑتال کی جاتی ہے اور اگر وہ بدل جاتی ہیں تو، مقامی ماڈیول کے دستخط کو اپ ڈیٹ کرنے تک انحصار کی لوڈنگ کو مسترد کر دیا جاتا ہے۔

بائٹ کوڈ الائنس کے ونگ کے تحت مشترکہ ترقی کے لیے ترجمہ کئی WebAssembly سے متعلق منصوبوںاس سے پہلے اتحاد کی بانی کمپنیوں کے ذریعہ الگ سے تیار کیا گیا تھا:

  • واسم ٹائم - WASI ایکسٹینشن کے ساتھ WebAssembly ایپلی کیشنز کو باقاعدہ اسٹینڈ اکیلے ایپلی کیشنز کے طور پر چلانے کے لیے رن ٹائم۔ یہ ایک خصوصی کمانڈ لائن یوٹیلیٹی کا استعمال کرتے ہوئے WebAssembly bytecode کو لانچ کرنے اور ریڈی میڈ ایگزیکیوٹیبل فائلوں کو لنک کرنے دونوں کی حمایت کرتا ہے (wasmtime کو ایک لائبریری کے طور پر ایپلی کیشن میں بنایا گیا ہے)۔ Wasmtime میں ایک لچکدار ماڈیولر ڈھانچہ ہے جو آپ کو مختلف ایپلی کیشنز کے لیے رن ٹائم کی پیمائش کرنے کی اجازت دیتا ہے، مثال کے طور پر، آپ محدود وسائل والے آلات کے لیے ایک سٹرپڈ ڈاؤن ورژن بنا سکتے ہیں۔
  • لوسیٹ - WebAssembly فارمیٹ میں پروگراموں کو انجام دینے کے لیے مرتب اور رن ٹائم۔ مخصوص خصوصیت لوسیٹ مشین کوڈ میں JIT کے بجائے مکمل متوقع تالیف (AOT، وقت سے پہلے) کا استعمال ہے جو براہ راست عمل کے لیے موزوں ہے۔ اس پروجیکٹ کو فاسٹلی نے تیار کیا تھا اور اسے کم سے کم وسائل استعمال کرنے اور بہت تیزی سے نئی مثالیں لانچ کرنے کے لیے بہتر بنایا گیا ہے (فاسٹلی کلاؤڈ ایج کمپیوٹنگ انجن میں لوسیٹ کا استعمال کرتا ہے جو ہر درخواست پر لانچ کیے گئے ہینڈلرز کے لیے WebAssembly کا استعمال کرتا ہے)۔ مشترکہ منصوبے کے حصے کے طور پر، لوسیٹ کمپائلر کو Wasmtime کو بیس کے طور پر استعمال کرنے کے لیے تبدیل کرنے کا منصوبہ ہے۔
  • ڈبلیو اے ایم آر (WebAssembly Micro Runtime) WebAssembly کو انجام دینے کے لیے ایک اور رن ٹائم ہے، جو اصل میں Intel کے ذریعے انٹرنیٹ آف تھنگز ڈیوائسز میں استعمال کے لیے تیار کیا گیا ہے۔ WAMR کم سے کم وسائل کی کھپت کے لیے بہتر بنایا گیا ہے اور اسے تھوڑی مقدار میں RAM والے آلات پر استعمال کیا جا سکتا ہے۔ اس پروجیکٹ میں WebAssembly bytecode، API (Libc کا سب سیٹ) اور متحرک ایپلیکیشن مینجمنٹ کے لیے ٹولز پر عمل درآمد کے لیے ایک مترجم اور ورچوئل مشین شامل ہے۔
  • کرینیلٹ - ایک کوڈ جنریٹر جو ہارڈ ویئر کے فن تعمیر سے آزاد ایک انٹرمیڈیٹ نمائندگی کا ترجمہ کرتا ہے جو مخصوص ہارڈویئر پلیٹ فارمز کے لیے موزوں قابل عمل مشین کوڈ میں کرتا ہے۔ کرین لفٹ بہت تیز رزلٹ جنریشن کے لیے فنکشن کمپلیشن کے متوازی ہونے کی حمایت کرتی ہے، جو اسے جے آئی ٹی کمپائلرز بنانے کے لیے استعمال کرنے کی اجازت دیتی ہے (کرین لفٹ پر مبنی جے آئی ٹی کا استعمال Wasmtime ورچوئل مشین میں کیا جاتا ہے)؛
  • WASI عام - آپریٹنگ سسٹم کے ساتھ تعامل کو منظم کرنے کے لیے WASI (WebAssembly System Interface) API کا ایک الگ نفاذ؛
  • کارگو واسی - کارگو پیکیج مینیجر کے لیے ایک ماڈیول جو براؤزر کے باہر WebAssembly استعمال کرنے کے لیے WASI انٹرفیس کا استعمال کرتے ہوئے WebAssembly bytecode میں Rust کوڈ کو مرتب کرنے کے لیے ایک کمانڈ کو نافذ کرتا ہے۔
  • واٹ и wasmparser — پارس کرنے والے ٹیکسٹ (WAT، WAST) اور WebAssembly bytecode کی بائنری نمائندگی کے لیے۔

Recap کرنے کے لیے، WebAssembly Asm.js کی طرح ہے، لیکن مختلف اس میں یہ ایک بائنری فارمیٹ ہے جو جاوا اسکرپٹ سے منسلک نہیں ہے اور مختلف پروگرامنگ زبانوں سے مرتب کردہ نچلے درجے کے انٹرمیڈیٹ کوڈ کو براؤزر میں انجام دینے کی اجازت دیتا ہے۔ WebAssembly کو کوڑا اٹھانے والے کی ضرورت نہیں ہے کیونکہ یہ واضح میموری مینجمنٹ کا استعمال کرتا ہے۔ WebAssembly کے لیے JIT استعمال کر کے، آپ مقامی کوڈ کے قریب کارکردگی کی سطح حاصل کر سکتے ہیں۔ WebAssembly کے اہم اہداف میں سے مختلف پلیٹ فارمز پر پورٹیبلٹی، قابل پیشن گوئی رویے اور یکساں کوڈ پر عمل درآمد کو یقینی بنانا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں