Wasmer 2.0، WebAssembly پر مبنی ایپلی کیشنز بنانے کے لیے ایک ٹول کٹ دستیاب ہے۔

Wasmer پروجیکٹ نے اپنی دوسری بڑی ریلیز جاری کی ہے، جس میں WebAssembly ماڈیولز کو چلانے کے لیے ایک رن ٹائم تیار کیا گیا ہے جس کا استعمال یونیورسل ایپلی کیشنز بنانے کے لیے کیا جا سکتا ہے جو مختلف آپریٹنگ سسٹمز پر چل سکتی ہیں، اور ساتھ ہی غیر بھروسہ مند کوڈ کو تنہائی میں چلانے کے لیے بھی۔ پروجیکٹ کوڈ Rust میں لکھا گیا ہے اور MIT لائسنس کے تحت تقسیم کیا گیا ہے۔

پورٹیبلٹی ایپلیکیشن کوڈ کو کم سطح کے WebAssembly انٹرمیڈیٹ کوڈ میں مرتب کرکے حاصل کیا جاتا ہے، جو کسی بھی OS پر چل سکتا ہے یا دوسری پروگرامنگ زبانوں کے پروگراموں میں سرایت کر سکتا ہے۔ پروگرام ہلکے وزن والے کنٹینرز ہیں جو WebAssembly pseudocode چلاتے ہیں۔ یہ کنٹینرز آپریٹنگ سسٹم سے منسلک نہیں ہیں اور ان میں کسی بھی پروگرامنگ زبان میں اصل میں لکھا ہوا کوڈ شامل ہو سکتا ہے۔ Emscripten ٹول کٹ کو WebAssembly میں مرتب کرنے کے لیے استعمال کیا جا سکتا ہے۔ موجودہ پلیٹ فارم کے مشین کوڈ میں WebAssembly کا ترجمہ کرنے کے لیے، یہ مختلف کمپلیشن بیک اینڈز (Singlepass، Cranelift، LLVM) اور انجنوں (JIT یا مشین کوڈ جنریشن کا استعمال کرتے ہوئے) کے کنکشن کو سپورٹ کرتا ہے۔

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

WebAssembly کنٹینر لانچ کرنے کے لیے، صرف Wasmer کو رن ٹائم سسٹم میں انسٹال کریں، جو بیرونی انحصار کے بغیر آتا ہے ("curl https://get.wasmer.io -sSfL | sh")، اور ضروری فائل چلائیں ("wasmer test.wasm" )۔ پروگراموں کو باقاعدہ WebAssembly ماڈیولز کی شکل میں تقسیم کیا جاتا ہے، جن کا نظم WAPM پیکیج مینیجر کے ذریعے کیا جا سکتا ہے۔ Wasmer ایک لائبریری کے طور پر بھی دستیاب ہے جسے Rust, C/C++, C#, D, Python, JavaScript, Go, PHP, Ruby, Elixir اور Java پروگراموں میں WebAssembly کوڈ کو سرایت کرنے کے لیے استعمال کیا جا سکتا ہے۔

پلیٹ فارم آپ کو مقامی اسمبلیوں کے قریب ایپلی کیشن پر عملدرآمد کی کارکردگی کو حاصل کرنے کی اجازت دیتا ہے۔ WebAssembly ماڈیول کے لیے Native Object Engine کا استعمال کرتے ہوئے، آپ مشین کوڈ ("wasmer compile -native" کو پہلے سے مرتب شدہ .so, .dylib اور .dll آبجیکٹ فائلیں بنانے کے لیے) بنا سکتے ہیں، جس کو چلانے کے لیے کم سے کم رن ٹائم درکار ہوتا ہے، لیکن تمام سینڈ باکس تنہائی کو برقرار رکھتا ہے۔ خصوصیات. بلٹ ان Wasmer کے ساتھ پہلے سے مرتب شدہ پروگراموں کی فراہمی ممکن ہے۔ رسٹ API اور Wasm-C-API ایڈ آنز اور ایکسٹینشنز بنانے کے لیے پیش کیے جاتے ہیں۔

Wasmer کے ورژن نمبر میں ایک اہم تبدیلی اندرونی API میں غیر مطابقت پذیر تبدیلیوں کے تعارف سے منسلک ہے، جو کہ ڈویلپرز کے مطابق، پلیٹ فارم کے 99% صارفین کو متاثر نہیں کرے گی۔ مطابقت کو توڑنے والی تبدیلیوں میں، سیریلائزڈ Wasm ماڈیولز کے فارمیٹ میں بھی تبدیلی ہے (Wasmer 1.0 میں سیریلائز کیے گئے ماڈیول Wasmer 2.0 میں استعمال نہیں کیے جا سکیں گے)۔ دیگر تبدیلیاں:

  • SIMD (سنگل انسٹرکشن، ایک سے زیادہ ڈیٹا) ہدایات کے لیے سپورٹ، ڈیٹا آپریشنز کو متوازی کرنے کی اجازت دیتا ہے۔ جن شعبوں میں SIMD کا استعمال نمایاں طور پر کارکردگی کو بہتر بنا سکتا ہے ان میں مشین لرننگ، ویڈیو انکوڈنگ اور ڈی کوڈنگ، امیج پروسیسنگ، فزیکل پروسیس سمولیشن، اور گرافکس ہیرا پھیری شامل ہیں۔
  • حوالہ کی اقسام کے لیے سپورٹ، Wasm ماڈیولز کو دوسرے ماڈیولز یا بنیادی ماحول میں معلومات تک رسائی کی اجازت دیتا ہے۔
  • نمایاں کارکردگی کی اصلاح کی گئی ہے۔ فلوٹنگ پوائنٹ نمبرز کے ساتھ LLVM رن ٹائم کی رفتار میں تقریباً 50% اضافہ کیا گیا ہے۔ کرنل تک رسائی کی ضرورت والے حالات کو کم کرکے فنکشن کالز کو نمایاں طور پر تیز کیا گیا ہے۔ کرین لفٹ کوڈ جنریٹر کی کارکردگی میں 40 فیصد اضافہ کیا گیا ہے۔ ڈیٹا ڈی سیریلائزیشن کا کم وقت۔
    Wasmer 2.0، WebAssembly پر مبنی ایپلی کیشنز بنانے کے لیے ایک ٹول کٹ دستیاب ہے۔
    Wasmer 2.0، WebAssembly پر مبنی ایپلی کیشنز بنانے کے لیے ایک ٹول کٹ دستیاب ہے۔
  • جوہر کو زیادہ درست طریقے سے ظاہر کرنے کے لیے، انجنوں کے نام تبدیل کیے گئے ہیں: JIT → یونیورسل، Native → Dylib (متحرک لائبریری)، آبجیکٹ فائل → StaticLib (جامد لائبریری)۔

ماخذ: opennet.ru

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