تتوفر المعاينة القياسية لـ WebAssembly 2.0

نشرت W3C مسودة مواصفات جديدة تعمل على توحيد البرامج الوسيطة WebAssembly 2.0 وواجهة برمجة التطبيقات (API) المرتبطة بها، مما يتيح إنشاء تطبيقات عالية الأداء يمكن حملها عبر المتصفحات ومنصات الأجهزة. يوفر WebAssembly تعليمات برمجية متوسطة منخفضة المستوى ومستقلة عن المستعرض لتشغيل التطبيقات المجمعة من لغات البرمجة المختلفة. باستخدام JIT for WebAssembly، يمكنك تحقيق مستويات أداء قريبة من التعليمات البرمجية الأصلية.

يمكن استخدام تقنية WebAssembly لأداء مهام عالية الأداء في المتصفح، مثل تشفير الفيديو ومعالجة الصوت والرسومات والتلاعب ثلاثي الأبعاد وتطوير الألعاب وعمليات التشفير والحسابات الرياضية من خلال السماح بكتابة التعليمات البرمجية بلغات مجمعة مثل C/C++ .

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

نشرت W3C ثلاث مسودة مواصفات لـ WebAssembly 2.0:

  • WebAssembly Core - يصف جهازًا ظاهريًا منخفض المستوى لتشغيل التعليمات البرمجية المتوسطة لـ WebAssembly. يتم تسليم الموارد المرتبطة بـ WebAssembly بتنسيق ".wasm"، مشابه لملفات ".class" في Java، والتي تحتوي على بيانات ثابتة ومقاطع تعليمات برمجية للعمل مع تلك البيانات.
  • واجهة WebAssembly JavaScript - توفر واجهة برمجة التطبيقات (API) للتكامل مع JavaScript. يسمح لك بالحصول على القيم وتمرير المعلمات إلى وظائف WebAssembly. يتبع تنفيذ WebAssembly نموذج أمان JavaScript ويتم تنفيذ جميع التفاعلات مع النظام الرئيسي بنفس طريقة تنفيذ تعليمات JavaScript البرمجية.
  • WebAssembly Web API - يحدد واجهة برمجة تعتمد على آلية Promise لطلب موارد ".wasm" وتنفيذها. تم تحسين تنسيق موارد WebAssembly لبدء التنفيذ دون انتظار تحميل الملف بالكامل، مما يؤدي إلى تحسين استجابة تطبيقات الويب.

التغييرات الرئيسية في WebAssembly 2.0 مقارنة بالإصدار الأول من المعيار:

  • دعم نوع المتجه v128 وتعليمات المتجه ذات الصلة التي تسمح لك بتنفيذ إجراءات على قيم رقمية متعددة بالتوازي (SIMD، بيانات متعددة للتعليمات الفردية).
  • القدرة على استيراد وتصدير المتغيرات العالمية القابلة للتغيير، مما يسمح بالربط العالمي للقيم مثل مؤشرات المكدس في C++.
  • تعليمات تحويل تعويم جديدة إلى int والتي، بدلاً من طرح استثناء عند تجاوز النتيجة، تقوم بإرجاع الحد الأدنى أو الحد الأقصى للقيمة الممكنة (ضرورية لـ SIMD).
  • تعليمات لتوسيع الإشارة للأعداد الصحيحة (زيادة عمق البت للرقم مع الحفاظ على العلامة والقيمة).
  • دعم الكتل والوظائف التي تعيد قيمًا متعددة (بالإضافة إلى تمرير معلمات متعددة إلى الوظائف).
  • تنفيذ وظائف BigInt64Array وBigUint64Array JavaScript للتحويل بين نوع BigInt JavaScript وتمثيل WebAssembly للأعداد الصحيحة 64 بت.
  • دعم أنواع المراجع (funcref وexternref) والتعليمات المرتبطة بها (select وref.null وref.func وref.is_null).
  • تعليمات Memory.copy، و Memory.fill، و Memory.init، و data.drop لنسخ البيانات بين مناطق الذاكرة ومسح مناطق الذاكرة.
  • تعليمات للوصول المباشر إلى الجداول وتعديلها (table.set، table.get، table.size، table.grow). القدرة على إنشاء واستيراد وتصدير جداول متعددة في وحدة واحدة. وظائف نسخ/ملء الجداول في الوضع الدفعي (table.copy وtable.init وelem.drop).

المصدر: opennet.ru

إضافة تعليق