يتوفر Wasmer 2.0 ، مجموعة أدوات لبناء تطبيقات قائمة على WebAssembly

أصدر مشروع Wasmer إصداره الرئيسي الثاني، وهو تطوير وقت تشغيل لتنفيذ وحدات WebAssembly التي يمكن استخدامها لإنشاء تطبيقات عالمية يمكن تشغيلها على أنظمة تشغيل مختلفة، بالإضافة إلى تشغيل تعليمات برمجية غير موثوقة بشكل منفصل. كود المشروع مكتوب بلغة Rust ويتم توزيعه بموجب ترخيص MIT.

يتم تحقيق إمكانية النقل من خلال تجميع تعليمات برمجية التطبيق في تعليمات برمجية متوسطة المستوى لـ WebAssembly، والتي يمكن تشغيلها على أي نظام تشغيل أو تضمينها في برامج بلغات برمجة أخرى. البرامج عبارة عن حاويات خفيفة الوزن تقوم بتشغيل كود WebAssembly الزائف. هذه الحاويات غير مرتبطة بنظام التشغيل ويمكن أن تتضمن تعليمات برمجية مكتوبة في الأصل بأي لغة برمجة. يمكن استخدام مجموعة أدوات Emscripten للتجميع إلى WebAssembly. لترجمة WebAssembly إلى رمز الجهاز الخاص بالمنصة الحالية، فإنه يدعم الاتصال بمختلف الواجهات الخلفية للتجميع (Singlepass وCranelift وLLVM) والمحركات (باستخدام JIT أو إنشاء كود الجهاز).

يتم توفير التحكم في الوصول والتفاعل مع النظام باستخدام واجهة برمجة تطبيقات WASI (WebAssembly System Interface)، التي توفر واجهات برمجة للعمل مع الملفات والمقابس والوظائف الأخرى التي يوفرها نظام التشغيل. يتم عزل التطبيقات عن النظام الرئيسي في بيئة معزولة ولا يمكنها الوصول إلا إلى الوظائف المعلنة (آلية أمان تعتمد على إدارة القدرات - للإجراءات مع كل من الموارد (الملفات، والأدلة، والمآخذ، واستدعاءات النظام، وما إلى ذلك)، يجب أن يمنح الطلب الصلاحيات المناسبة).

لتشغيل حاوية WebAssembly، ما عليك سوى تثبيت Wasmer في نظام وقت التشغيل، والذي يأتي بدون تبعيات خارجية ("curl https://get.wasmer.io -sSfL | sh")، وتشغيل الملف الضروري ("wasmer test.wasm" ). يتم توزيع البرامج في شكل وحدات WebAssembly العادية، والتي يمكن إدارتها باستخدام مدير الحزم WAPM. يتوفر Wasmer أيضًا كمكتبة يمكن استخدامها لتضمين تعليمات WebAssembly البرمجية في برامج Rust وC/C++ وC# وD وPython وJavaScript وGo وPHP وRuby وElixir وJava.

يتيح لك النظام الأساسي تحقيق أداء تنفيذ التطبيق بالقرب من التجميعات الأصلية. باستخدام Native Object Engine لوحدة WebAssembly، يمكنك إنشاء تعليمات برمجية للجهاز ("wasmercompile -native" لإنشاء ملفات كائنات .so و .dylib و .dll المترجمة مسبقًا)، والتي تتطلب الحد الأدنى من وقت التشغيل للتشغيل، ولكنها تحتفظ بكل عزلة وضع الحماية سمات. من الممكن توفير البرامج المترجمة مسبقًا باستخدام Wasmer المدمج. يتم تقديم Rust API وWasm-C-API لإنشاء الوظائف الإضافية والإضافات.

يرتبط التغيير الكبير في رقم إصدار Wasmer بإدخال تغييرات غير متوافقة على واجهة برمجة التطبيقات الداخلية، والتي، وفقًا للمطورين، لن تؤثر على 99٪ من مستخدمي النظام الأساسي. من بين التغييرات التي تنتهك التوافق، هناك أيضًا تغيير في تنسيق وحدات Wasm المتسلسلة (لن يكون من الممكن استخدام الوحدات المتسلسلة في Wasmer 1.0 في Wasmer 2.0). تغييرات أخرى:

  • دعم تعليمات SIMD (تعليمات فردية، بيانات متعددة)، مما يسمح بموازاة عمليات البيانات. تشمل المجالات التي يمكن أن يؤدي فيها استخدام SIMD إلى تحسين الأداء بشكل كبير التعلم الآلي، وترميز الفيديو وفك تشفيره، ومعالجة الصور، ومحاكاة العمليات الفيزيائية، ومعالجة الرسومات.
  • دعم أنواع المراجع، مما يسمح لوحدات Wasm بالوصول إلى المعلومات الموجودة في وحدات أخرى أو في البيئة الأساسية.
  • تم إجراء تحسينات كبيرة في الأداء. تمت زيادة سرعة تشغيل LLVM بأرقام الفاصلة العائمة بنسبة 50% تقريبًا. تم تسريع استدعاءات الوظائف بشكل كبير عن طريق تقليل المواقف التي تتطلب الوصول إلى النواة. تمت زيادة أداء مولد كود Cranelift بنسبة 40%. تقليل وقت إلغاء تسلسل البيانات.
    يتوفر Wasmer 2.0 ، مجموعة أدوات لبناء تطبيقات قائمة على WebAssembly
    يتوفر Wasmer 2.0 ، مجموعة أدوات لبناء تطبيقات قائمة على WebAssembly
  • لتعكس الجوهر بشكل أكثر دقة، تم تغيير أسماء المحركات: JIT → Universal، Native → Dylib (المكتبة الديناميكية)، ملف الكائن → StaticLib (المكتبة الثابتة).

المصدر: opennet.ru

إضافة تعليق