مرحبا بالجميع! 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.