Emscripten 3.0 ، سلسلة أدوات إنشاء WebAssembly باستخدام LLVM

مؤخرا تم الإعلان عن إصدار الإصدار الجديد من مترجم Emscripten 3.0، والتي تتميز بالسماح بتجميع الكود في C / C ++ واللغات الأخرى التي تتوفر لها واجهات أمامية قائمة على LLVM ، في WebAssembly عالمي المستوى المنخفض.

تتمثل الوظيفة الرئيسية لهذا التجميع في تكامله اللاحق مع مشاريع JavaScript ، والتي يتم تشغيلها في متصفح الويب ، واستخدامها في Node. Js أو إنشاء تطبيقات مستقلة عبر الأنظمة الأساسية تعمل مع وقت تشغيل wasm.

حول Emscripten

الهدف الاساسي تطوير مشروع Emscripten هو إنشاء أداة تسمح لك بتشغيل التعليمات البرمجية على الويب ، بغض النظر عن لغة البرمجة التي كُتبت بها.

يمكن للتطبيقات المترجمة استخدام مكالمات مكتبة C و C ++ القياسية (libc ، libcxx) ، امتدادات C ++ ، تعدد مؤشرات الترابط القائم على pthreads ، POSIX API ، والعديد من مكتبات الوسائط المتعددة. يتم توفير واجهات برمجة التطبيقات للتكامل مع واجهة برمجة تطبيقات الويب وكود JavaScript بشكل منفصل.

إمسكربتن يدعم دفق إخراج مكتبة SDL2 عبر قماش، كما يوفر دعم OpenGL و EGL من خلال WebGL ، مما يسمح لك بتحويل تطبيقات وألعاب الرسومات إلى WebAssembly.

عمليًا ، يمكن تجميع أي قاعدة رموز C أو C ++ محمولة في WebAssembly باستخدام Emscriptenمن الألعاب عالية الأداء التي تحتاج إلى عرض الرسومات وتشغيل الأصوات وتحميل الملفات ومعالجتها ، إلى أطر التطبيقات مثل Qt. تم استخدام Emscripten بالفعل لتحويل قائمة طويلة جدًا من قواعد التعليمات البرمجية في العالم الحقيقي إلى WebAssembly ، بما في ذلك قواعد الكود التجاري مثل Unreal Engine 4 و Unity Engine.

بالإضافة إلى تجميع كود C / C ++ ، يتم تطوير المشاريع بشكل منفصل لضمان بدء المترجمين الفوريين والآلات الافتراضية لـ Lua و C # و Python و Ruby و Perl في المتصفحات. من الممكن أيضًا تطبيق واجهات غير Clang على LLVM المتاحة للغات مثل Swift و Rust و D و Fortran.

خاصة هناك اختلافات بين وقت التشغيل الأصلي و Emscripten ، مما يعني أنه بشكل عام ، هـمن الضروري إجراء بعض التغييرات على الكود الأصلي. ومع ذلك ، ستحتاج العديد من التطبيقات فقط إلى تغيير الطريقة التي تحدد بها الحلقة الرئيسية الخاصة بها وكذلك تعديل معالجة الملفات الخاصة بها لتلائم قيود المتصفح / JavaScript.

هناك أيضًا قيود يمكن أن تجعل ترحيل بعض التعليمات البرمجية أسهل - اقرأ إرشادات قابلية النقل لتحديد المكان الذي قد تحتاج إلى بذل المزيد من الجهد فيه.

الميزات الرئيسية الجديدة لـ Emscripten 3.0

في هذا الإصدار الجديد المقدم ، تم تحديث مكتبة musl C المستخدمة في emscripten إلى الإصدار 1.2.2 (تم استخدام الإصدار 1.1.15 في فرع Emscripten 2.x).

من مكتبة parseTools.js ، تمت إزالة جزء من الوظائف ، والتي تُستخدم بشكل أساسي في المشروع: removePointing ، pointingLevels ، removeAllPointing ، isVoidType ، isStructPointerType ، isArrayType ، isStructType ، isVectorType ، isStructuralType getStructuralTypeParts ، getStructuralType _IntToHex ، IEEEUnHex ، Compiletime.isPointer.

في حين في قوالب shell.html و shell_minimal.html ، يتم إخراج رسائل الخطأ التي تحدث أثناء عملية emscripten ويصدرها التطبيق من خلال stderr تم تغييره افتراضيًا لاستخدام console.warn بدلاً من console.error.

كما تم تسليط الضوء على ذلك إضافة القدرة على تحديد ترميز نص معين يستخدم في أسماء الملفات. يمكن تحديد الترميز كلاحقة عند تمرير اسم الملف ، على سبيل المثال "a.rsp.utf-8" أو "a.rsp.cp1251").

أخيرًا ، إذا كنت مهتمًا بمعرفة المزيد عنها حول Emscripten ، فيمكنك الرجوع إلى تفاصيل المشروع في الموقع الرسمي.

وبنفس الطريقة ، يمكنك الرجوع إلى الوثائق على الويب حول كيفية استخدام Emscripten ، وهو موقع مرجعي يمكن أن نوصي به هو موقع مطور Mozilla: https://developer.mozilla.org.

أيضًا ، من المهم الإشارة إلى أن كود المشروع يتم توزيعه بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. يستخدم المترجم التطورات من مشروع LLVM ويتم استخدام مكتبة Binaryen لإنشاء WebAssembly والتحسين. يمكنك التحقق من الرمز الخاص بك المصدر على جيثب.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: AB Internet Networks 2008 SL
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.