بنية الإضافات
تم بناء نظام إضافات PRX على بيئة تشغيل WASM توفّر بيئة تنفيذ آمنة وقابلة للنقل لشيفرات الطرف الثالث. تصف هذه الصفحة البنية التقنية.
بيئة التشغيل
يستخدم PRX بيئة Wasmtime لتنفيذ إضافات WASM. تعمل كل نسخة إضافة في WASM store خاص بها مع ذاكرة خطية معزولة.
┌──────────────────────────────┐
│ PRX Host │
│ │
│ ┌────────────────────────┐ │
│ │ WASM Runtime │ │
│ │ ┌──────┐ ┌──────┐ │ │
│ │ │Plugin│ │Plugin│ │ │
│ │ │ A │ │ B │ │ │
│ │ └──┬───┘ └──┬───┘ │ │
│ │ │ │ │ │
│ │ Host Functions API │ │
│ └────────────────────────┘ │
└──────────────────────────────┘حدود المضيف-الضيف
تتواصل الإضافات مع المضيف عبر مجموعة معرّفة من وظائف المضيف. وتفرض هذه الحدود:
- سلامة الأنواع -- يتم التحقق من جميع معاملات الدوال
- حدود الموارد -- يتم تحديد سقف لاستخدام الذاكرة وCPU
- فحوصات الصلاحيات -- كل استدعاء لوظيفة مضيف يتم تفويضه مقابل manifest صلاحيات الإضافة
نموذج الذاكرة
لكل إضافة مساحة ذاكرة خطية خاصة بها (الافتراضي 64 MB). يتم تبادل البيانات بين المضيف والضيف عبر مخازن ذاكرة مشتركة مع تسلسل صريح.
دورة حياة الإضافة
- Load -- تحميل ملف WASM والتحقق منه
- Initialize -- استدعاء دالة
init()في الإضافة مع الإعدادات - Ready -- تسجّل الإضافة قدراتها (الأدوات، القنوات، إلخ)
- Execute -- يستدعي المضيف وظائف الإضافة عند الحاجة
- Shutdown -- استدعاء دالة
shutdown()للإغلاق والتنظيف