ستستخدم Mozilla WASI لجميع الأجهزة وأجهزة الكمبيوتر وأنظمة التشغيل

مرحبا بالجميع! ConnectMace متصلة ونواصل تعريفك بأحدث الأخبار من عالم JavaScript. الخطوة التالية هي ترجمة مقالة حول WASI ، وهي تقنية تسمح باستخدام WebAssembly خارج المتصفحات


شكل واحد لحكم كل شيء



قدمت Mozilla مشروعًا يسمى WASI (واجهة نظام WebAssembly) هذا الأسبوع لتوحيد كيفية تفاعل كود WebAssembly مع نظام التشغيل. إذا كان المشروع ناجحًا ، فسيقوم بنفس وظائف جهاز Oracle Java الظاهري ، ولكن بكفاءة أكبر بكثير وبوظائف متقدمة.


WebAssembly (WASM) هو تنسيق تعليمات ثنائي لجهاز ظاهري يمكن تشغيله على بنيات الأجهزة المختلفة. التعليمات البرمجية المكتوبة بعدة لغات مثل C / C ++ ، Go ، Rust يمكن تجميعها في كود WASM.


قدمت العديد من متصفحات الويب دعمًا لـ WebAssembly ، ولكن حتى هذه المرحلة لم يكن هناك معيار للعمل بها خارج المستعرض. والآن كان هناك WASI.
قال لين كلارك ، مطور برنامج Mozilla ، في منشور مدونة Mozilla Hacks هذا: "يجب أن يكون هناك طريقة لتفاعل الشفرة مع النظام خارج المتصفح ، أي واجهة النظام". "لا تحتوي منصة WebAssembly بعد على مثل هذه الطريقة."


WASM + WASI


باستخدام WASI ، يمكن تشغيل رمز WASM في مستعرض أو أي بيئة أخرى متوافقة ، مما يوفر تنمية مستقلة عن اللغة عبر الأنظمة الأساسية. بينما تهدف واجهة نظام التشغيل المحمولة (POSIX) إلى ضمان قابلية نقل شفرة مصدر البرنامج بين أنظمة التشغيل المشابهة لنظام التشغيل UNIX ، تم تصميم WASI لدعم توافق الملفات الثنائية المترجمة على أجهزة وأنظمة تشغيل مختلفة. يوفر المعيار وقت تشغيل عالميًا ، تكون سرعته قريبة من المستوى الأصلي.


يقوم Java Virtual Machine (JVM) بالشيء نفسه ، ولكن يلزم وجود مكون إضافي لتشغيل تعليمات Java البرمجية في المستعرض. على الرغم من أن مرونة اللغة ، مثل منصة WebAssembly المقترحة ، يمكن تحقيقها في Java باستخدام GraalVM ، فإن نظام Java البيئي لا يزال في الخلفية بسبب الأحداث المتعلقة بادعاءات Oracle بانتهاك حقوق الملكية الفكرية الخاصة بهم.


يتمتع تنسيق WASM ، الذي يوفر وصولاً آمنًا للذاكرة والتحقق المريح ، بميزة على تطبيقات Java من حيث الأمان ، على الرغم من إمكانية مهاجمتها لتغيير تدفق التحكم الأولي للبرنامج . كما أنه يتماشى بشكل جيد مع C / C ++ و Rust.


يشرح تيل شنايدر ، قائد فريق موزيلا في WebAssembly ، الفرق بين WebAssembly و Java على Twitter كما يلي: "تم تصميم WebAssembly للتوسع من الأجهزة المصغرة إلى مجموعات الخوادم أو CDNs الضخمة. التنسيق أكثر استقلالية عن اللغة من Java ، و التنفيذ أقل بكثير من الموارد. "


إذا لم تكن المزايا المحتملة لـ WASI واضحة لك ، فإليك ما قاله أحد المبدعين في Docker Solomon Hykes: "إذا كان WASM + WASI موجودًا في عام 2008 ، فلن يحدث لنا إنشاء Docker. WebA جانب الخادم هو مستقبل ذلك الحوسبة. افتقرنا إلى واجهة نظام موحدة ، وآمل أن تحل WASI هذه المشكلة! "


على هذه الموجة من التفاؤل ، أصدرت فاستلي يوم الخميس Lucet ، المترجم الأصلي والبيئة لتنفيذ كود WebAssembly WASM في البيئات السحابية. وهو يكمل Mozilla Wasmtime ، وهي بيئة وقت تشغيل رمز WASM خارج المتصفح.


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

Source: https://habr.com/ru/post/ar449554/


All Articles