عن المشروع
Wago هو بيئة تشغيل WebAssembly مكتوبة بالكامل بلغة Go. وبدلاً من تفسير Wasm، يقوم بتجميع الوحدات مباشرة إلى كود آلة أصلي، مما يسمح بتضمينه في برامج Go دون الحاجة إلى CGO، وهو ما يحافظ على بساطة عمليات بناء Go العادية والترجمة المتقاطعة (cross-compilation). يقدم المشروع نفسه على أنه سريع ومدمج وقابل للتوسع، ويشير إلى أنه لا يزال في المرحلة التجريبية (beta)، مما يعني أن واجهات برمجة التطبيقات (APIs) والملفات الناتجة عن .wago قد تتغير.
الخصائص التي يسلط المشروع الضوء عليها:
- لغة Go خالصة: التضمين لا يتطلب سلسلة أدوات C.
- التركيز على المعايير: يُذكر أن بيئة التشغيل تجتاز مجموعة اختبارات WebAssembly الرسمية، بالإضافة إلى اختبارات fuzzing ومجموعات بيانات من العالم الحقيقي.
- قابل للتوسع: تتوفر WASI ونموذج المكونات (Component Model) وقدرات المضيف الأخرى خارج بيئة التشغيل الأساسية كإضافات (plugins).
- ملفات تنفيذية مستقلة: يمكن تجميع ملف .wasm إلى ملف ثنائي أصلي صغير، وهو ما يشير دليل README إلى فائدته في أدوات واجهة السطر البرمجي (CLI).
- المنصات: Linux و macOS و Windows على معماريتي amd64 و arm64، مع تفاوت تغطية ميزات WebAssembly حسب الواجهة الخلفية. ويوثق ملف مصفوفة الميزات التغطية الدقيقة.
التثبيت
في macOS و Linux، يقوم الأمر المكون من سطر واحد الموثق بتنزيل نص تثبيت وتمريره إلى sh؛ أما في Windows، فيقوم مستخدمو PowerShell بتشغيل أمر irm مكافئ. تقوم هذه العمليات بتثبيت مدير يقوم بدوره بتثبيت بيئة التشغيل. ويغطي موقع التوثيق طرق تثبيت بديلة، وقنوات الإصدار، والبناء من المصدر.
تشغيل الوحدات
بعد التثبيت، يمكن تنفيذ الوحدة مباشرة: تشغيل ملف Fibonacci Wasm صغير مع وسيط يطبع النتيجة المتوقعة. ولإنشاء ملف ثنائي مستقل، يأخذ الأمر الفرعي compile مدخلاً بصيغة .wasm ومسار مخرجات، ويقبل الملف التنفيذي الناتج نفس الوسائط.
استخدام Wago من Go
يقوم مطورو Go بإضافة الوحدة عبر go get github.com/wago-org/wago. يوفر المستودع أمثلة مرقمة، بما في ذلك مثال لبيئة تشغيل ذات أنواع (typed runtime) تقوم بتجميع وحدة، وإنشاء مثيل، واستدعاء دالة مُصدرة. ويغطي دليل توثيق منفصل عملية تضمين Wago في Go.
قدرات المضيف والإضافات
تم إبقاء تكاملات المضيف عمداً خارج بيئة التشغيل الأساسية. يمكن تهيئة المشروع باستخدام الأمر init، وتُضاف الإضافات مثل تنفيذ WASI عن طريق الاسم، على سبيل المثال wago-org/wasi. كما يتوفر موقع لسجل الإضافات لتصفح المتاح منها.
الأداء
يذكر دليل README أن Wago يستخدم بضعة كيلوبايتات من ذاكرة الوصول العشوائي (RAM)، ويدعي أن أوقات التجميع أسرع بنحو ثلاث مرات والتنفيذ أسرع بنحو 40 بالمائة من wazero. يربط المشروع بصفحة اختبارات أداء ومجلد اختبارات أداء في المستودع. هذه الأرقام هي قياسات المطورين الخاصة ويجب التحقق منها مقابل أعباء العمل الخاصة بك قبل الاعتماد عليها.
حالة المشروع والترخيص
تم إصدار Wago بموجب رخصة Apache License 2.0 ويتم تطويره مجاناً، مع تشجيع الرعاية. يتضمن المستودع التوثيق، والأمثلة، ومصفوفة الميزات، ووثيقة الهندسة المعمارية، وخارطة طريق، وإرشادات المساهمة، ومتتبع المشكلات.
بشكل عام، يستهدف Wago مطوري Go الذين يرغبون في تشغيل أو تضمين WebAssembly دون الاعتماد على C، ويفضلون نواة تشغيل صغيرة تُضاف ميزات المضيف إليها عبر الإضافات. وتعد حالته التجريبية وحقيقة أن أرقام الأداء صادرة عن المشروع نفسه هي النقاط الرئيسية التي يجب مراعاتها قبل اعتماده.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.