C++ تدعم الآن WASI رسميًا: مرحلة جديدة في التطوير عبر المنصات
أعلنت لجنة توحيد معايير لغة C++ (ISO/IEC JTC1/SC22/WG21) بالتعاون مع مجموعة مطوري LLVM ومشروع WebAssembly عن حدث طال انتظاره: لغة C++ حصلت على دعم رسمي وموثق لمنصة WebAssembly System Interface (WASI). وهذا يعني أنه يمكن للمطورين الآن كتابة كود نظامي بلغة C++ يعمل ليس فقط على أنظمة التشغيل التقليدية (Windows, Linux, macOS)، ولكن أيضًا في بيئة WebAssembly خارج المتصفح — على الخوادم، وفي أجهزة إنترنت الأشياء، وأنظمة الحوسبة الطرفية السحابية.
ما هو WASI ولماذا هو مهم لـ C++؟
WASI (WebAssembly System Interface) هي واجهة نظام موحدة توفر لوحدات WebAssembly إمكانية الوصول إلى نظام الملفات، ومآخذ الشبكة، والوقت، وموارد نظام التشغيل الأخرى. سابقًا، كان بإمكان C++ التجميع إلى WebAssembly، لكن التفاعل مع العالم الخارجي كان محدودًا ببيئة المتصفح. الآن، مع الدعم الرسمي لـ WASI، تحصل C++ على بيئة معزولة كاملة لتنفيذ آمن للكود خارج المتصفح.
- الأمان: يتم تنفيذ وحدات C++ في بيئة رملية مع التحكم في الوصول إلى الموارد — مثالي للخدمات متعددة المستخدمين.
- قابلية النقل: ملف ثنائي واحد .wasm يعمل على أي نظام تشغيل يحتوي على بيئة تشغيل WASI (Wasmer, Wasmtime, WAMR).
- الأداء: تجميع C++ مباشرة إلى كود WebAssembly الأصلي (عبر Clang/LLVM) يعطي سرعة تنفيذ شبه أصلية، دون تكاليف إضافية للآلة الافتراضية.
ما الذي تغير في بيئة C++؟
الابتكار الرئيسي هو ظهور دليل رسمي لنقل كود C++ إلى WASI وإدراج دعم WASI في المستودع الرئيسي لـ LLVM. الآن، يمكن تجميع أي مشروع بلغة C++ لـ WASI باستخدام علامة مترجم بسيطة:
clang++ --target=wasm32-wasi -O3 my_program.cpp -o my_program.wasm
بالإضافة إلى ذلك، تم تحديث المكتبات القياسية لـ C++ (libc++, libc++abi) للعمل بشكل صحيح مع استدعاءات نظام WASI. لم يعد المطورون بحاجة إلى تكوين الربط مع المكتبات الخارجية يدويًا — كل شيء يعمل «فورًا».
أين يتم تطبيق هذا بالفعل؟
- الحوسبة السحابية: تشغيل الخدمات المصغرة بلغة C++ في حاويات WASI المعزولة (مثل Fastly Compute@Edge أو Cloudflare Workers مع دعم WASI).
- الأنظمة المدمجة: استخدام WASI لتحديث البرامج الثابتة لأجهزة إنترنت الأشياء المكتوبة بلغة C++ بشكل آمن.
- الحسابات العلمية: نقل وحدات C++ المكثفة حسابيًا (مكتبات الجبر الخطي، المحاكاة) إلى WASI للتشغيل عبر المنصات دون إعادة تجميع.
ما هي الخطوات التالية؟
في الخطط القريبة — الدعم الكامل لتعدد الخيوط في C++ ضمن WASI (حاليًا متاح فقط نموذج أحادي الخيط) والتكامل مع coroutines C++20/23. يعمل المجتمع بالفعل على تكييف المكتبات الشائعة (Boost, Qt, OpenCV) للتجميع تحت WASI. تابع التحديثات على الموقع الرسمي wasi.dev وفي مستودع LLVM.
إذا كنت تكتب بلغة C++ وتريد