قم بتشجيع مترجم مفتوح المصدر من C / C ++ إلى WebAssembly و JavaScript

ابتهج

Cheerp: مترجم C ++ للويب

تم الإعلان عنه مؤخرًا إصدار Cheerp 3.0، مترجم ذلك يسمح لك بترجمة أي كود C / C ++ إلى WebAssembly أو JavaScript. يتميز الفرع الجديد بنقل المترجم والمكتبات المصاحبة لاستخدام تراخيص Apache 2.0 و LLVM المسموح بها ، بدلاً من سياسة الترخيص المحدودة المطبقة مسبقًا ، والتي توفر خيار ترخيص GPLv2 للمشاريع غير التجارية ومالك ترخيص للمشاريع التجارية.

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

لقد مر أكثر من عام منذ الإصدار السابق لـ Cheerp (Cheerp 2.7) ، وهذا الإصدار الجديد مليء بالميزات والتحسينات الجديدة التي تنقل ، مرة أخرى ، أحدث ما توصلت إليه التقنية في استخدام C ++ كلغة برمجة لتطبيقات الويب. ألعاب.

الأهم من ذلك ، مع هذا الإصدار ، نجري تغييرًا كبيرًا على نموذج ترخيص Cheerp. اعتبارًا من Cheerp 3.0 ، تم الآن ترخيص جميع مكونات والمكتبات الأساسية للمترجم الأساسي بموجب ترخيص Apache 2.0 / LLVM. يمثل هذا خروجًا جذريًا عن نموذج الترخيص التجاري GPLv2 / المزدوج السابق ، مما يسمح باستخدام Cheerp 3.0 لأي غرض دون قيود.

حول Cheerp

المشروع يسمح لك بدمج كود C / C ++ و JavaScript في تطبيق ويب مع القدرة على الوصول من كود JavaScript إلى الوظائف التي تم تطويرها في الأصل في C / C ++ ، ومن كود C / C ++ إلى كائنات JavaScript ، ومكتبات JavaScript ، وواجهات برمجة تطبيقات الويب ، وجميع ميزات DOM ، بالإضافة إلى السماح لك بإنشاء بنيات مختلطة ، جزء من الشفرة التي يتم تجميعها إلى JavaScript وأجزاء إلى WebAssembly. يدعم مشاريع البناء التي تستخدم مكتبات libc و libc ++ القياسية.

بالمقارنة مع مترجم Emscripten ، فإن Cheerp يولد رمز WebAssembly الوسيط المحسن والمضغوط بشكل أكبر (في المتوسط ​​، تكون أحجام الملفات الناتجة أصغر بنسبة 7٪.)

من الناحية المفاهيمية ، تتلخص الاختلافات في حقيقة ذلك إمسكربتن يستخدم كتنسيق كائن لـ WebAssembly ويقوم بإجراء الربط والتحسين في مرحلة ما بعد المعالجة لـ WebAssembly (wasm-opt). يستخدم Cheerp LLVM bytecode كتمثيل وسيط للمكتبات وملفات الكائنات ، مما يسمح بتحسينات أوسع على مستوى المشروع باستخدام البيانات الوصفية على مستوى LLVM دون الحاجة إلى المعالجة اللاحقة.

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

وبالإضافة إلى ذلك، يستخدم Cheerp مُحسِّن PreExecuter لتنفيذ التعليمات البرمجية بشكل استباقي في وقت الترجمة ، على سبيل المثال ، لتحويل المنشئات المستخدمة لتهيئة الكائنات العامة إلى ثوابت. بالإضافة إلى ذلك ، يتم استخدام PartialExecuter أثناء التجميع ، والذي ، بناءً على تحليل معلمات الوظيفة ، يزيل الكود الذي يضمن عدم استخدامه عند التنفيذ.

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

يمكن استخدام Cheerp كمنصة لبناء تطبيقات الويب المدمجة العميل / الخادم في C ++. في الممارسة الحالية ، من الشائع تطوير واجهة أمامية منفصلة قائمة على المستعرض مكتوبة بلغة JavaScript ونهاية خلفية منفصلة مكتوبة بلغة PHP أو Python أو Ruby أو JavaScript / Node.js.

يوفر Cheerp الوسائل لإنشاء تطبيقات ويب C ++ كاملة تدعم كل من الواجهة الخلفية والواجهة الأمامية في قاعدة رمز واحدة.

أثناء عملية الإنشاء ، يتم تجميع جانب الخادم إلى كود أصلي ، ويتم تحويل الواجهة إلى تمثيل JavaScript. يتم تصحيح أخطاء جميع مكونات المشروع ، بما في ذلك تلك المحولة إلى JavaScript ، باستخدام نصوص مصدر C ++ باستخدام تقنية خريطة المصدر.

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

يعتمد كود المترجم على تطورات LLVM و Clang ويتضمن تحسينات إضافية لتحسين الأداء وتقليل حجم المخرجات المجمعة.


اترك تعليقك

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

*

*

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