WASI هو مشروع من Mozilla لاستخدام WebAssembly خارج المتصفح

WASI هو مشروع من Mozilla لاستخدام WebAssembly خارج المتصفح

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

الهدف من المشروع هو توفير واجهة برمجة تطبيقات توسع استخدام WebAssembly وتسمح لك بإنشاء برامج على أساس منتظم في هذه التقنية التي تعمل خارج المتصفحفهي محمولة على أي منصة وتظهر مستوى عالٍ من الأمان.

ما هو الواسي؟

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

تم تطوير واجهة برمجة تطبيقات WASI مبدئيًا باعتبارها غير مرتبطة بالمتصفح ومستقلة من JavaScript / Web API ، ولكن في نفس الوقت يوفر مستوى مناسبًا لعزل النظام main (يتم تشغيل التطبيقات في وضع الحماية) ويسمح لك بتحديد الصلاحيات الممنوحة للتطبيق صراحة في أسلوب CloudABI و Capsicum.

هل كنت يستخدم نموذج أمان يعتمد على إدارة الأذونات، حيث يمكن للبرنامج تنفيذ الإجراءات المصرح بها عمداً فقط.

على غرار الطريقة التي يحد بها WebAssembly الوصول على مستوى وظائف الاستيراد ، يتحكم WASI في الوصول إلى إمكانات النظام.

ترتبط الملفات والدلائل والمآخذ والموارد الأخرى بنوع خاص من واصف الملفات (السعة) ، ويجب أن يكون لدى التطبيق أذونات لتنفيذ إجراء على كل مورد.

تدار الأذونات بشكل هرمي ، أي أن الوصول إلى الدليل يتم فتحه تلقائيًا والوصول إلى جميع الملفات التي يحتوي عليها.

بالنظر إلى أن WebAssembly هو إصدار لغة تجميع مستقل للنظام الأساسي ، ويمكن أن يؤدي استخدام JIT إلى تحقيق مستوى أداء قريب من الكود الأصلي، مع الحفاظ على القدرة على العمل على منصات الأجهزة وأنظمة التشغيل المختلفة.

يوفر المشروع حاليًا وحدة wasi-core مع تنفيذ واجهة POSIX API الأساسية (الملفات والمآخذ وما إلى ذلك) ، والتي تفتقر حاليًا إلى دعم الأقفال والإدخال / الإخراج غير المتزامن.

في المستقبل ، من المخطط إنشاء وحدات مع تطبيق API لأداء عمليات التشفير ، والعمل مع الرسومات ثلاثية الأبعادوالتفاعل مع المستشعرات والعمليات مع العمليات (لم يتم دعم استدعاء fork بعد) ومعالجة بيانات الوسائط المتعددة.

نماذج المكونات

Wasmtime هو وقت تشغيل مسؤول عن تشغيل التطبيقات بناءً على WebAssembly مع ملحقات WASI كتطبيقات عادية قائمة بذاتها.

Se يدعم إطلاق WebAssembly bytecode بمساعدة أداة سطر أوامر خاصة وتصميم ملفات قابلة للتنفيذ جاهزة للاستخدام (تم تضمين wasmtime في التطبيق كمكتبة).

لتحقيق المستوى المناسب من الأداء ، يتم استخدام مترجم JIT على أساس مولد كود الارتفاع.

Lucet هو إصدار وقت تشغيل آخر لمشروع Fastly (من المقرر نشر الكود اليوم أو غدًا).

WASI SDK- أدوات تجميع تطبيقات C / C ++ بتنسيق تجميع الويب باستخدام Clang 8.0.

هدف تجميع مع دعم WASI للغة Rust ، والذي يسمح لك بترجمة كود Rust في WebAssembly.

يعد Wasi-sysroot تطبيقًا لمكتبة libc القياسية لـ WASI، بناءً على كود Musl ، بالإضافة إلى طبقة وقت التشغيل لترجمة الوظائف التي توفرها المكتبة إلى استدعاءات نظام لأنظمة تشغيل مختلفة لتحقيق إمكانية تشغيل تطبيق WASI على أنظمة تشغيل مختلفة.

يقوم المشروع أيضًا بتطوير مكتبة جافا سكريبت polyfill مع تطبيق WASI لتشغيل التطبيقات داخل المتصفح.، والذي يسمح بتطبيق نموذج التحكم في الوصول "القدرات" على التعليمات البرمجية المنفذة في المتصفح.

من بين الخطط ، تمت الإشارة إلى إنشاء نظام وحدة قائم على WASI للتكامل في تطبيقات المكونات الإضافية المعزولة مع وظائف إضافية متوفرة في تنسيق WebAssembly.

تتمثل إحدى المهام الرئيسية لـ WebAssembly في ضمان إمكانية النقل وإمكانية التنبؤ بالسلوك وهوية تنفيذ التعليمات البرمجية على الأنظمة الأساسية المختلفة.


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.