يتوفر Emscripten 3.0 و C / C ++ إلى مترجم WebAssembly

تم نشر إصدار برنامج التحويل البرمجي Emscripten 3.0، مما يسمح لك بتجميع التعليمات البرمجية في C/C++ واللغات الأخرى التي تتوفر لها الواجهات الأمامية المستندة إلى LLVM في WebAssembly للتعليمات البرمجية المتوسطة ذات المستوى المنخفض العالمية، للتكامل اللاحق مع مشاريع JavaScript، قيد التشغيل في متصفح الويب، واستخدامها في Node.js أو إنشاء تطبيقات مستقلة متعددة المنصات تعمل باستخدام وقت تشغيل Wasm. يتم توزيع رمز المشروع بموجب ترخيص MIT. يستخدم المترجم التطورات من مشروع LLVM، ويتم استخدام مكتبة Binaryen لإنشاء WebAssembly وتحسينه.

الهدف الرئيسي لمشروع Emscripten هو إنشاء أداة تسمح لك بتنفيذ التعليمات البرمجية على الويب بغض النظر عن لغة البرمجة التي تمت كتابة التعليمات البرمجية بها. يمكن للتطبيقات المترجمة استخدام الاستدعاءات إلى مكتبات C وC++ القياسية (libc وlibcxx) وامتدادات C++ وتعدد مؤشرات الترابط المستندة إلى pthreads وواجهات POSIX API والعديد من مكتبات الوسائط المتعددة. يتم توفير واجهات برمجة التطبيقات للتكامل مع Web API ورمز JavaScript بشكل منفصل.

يدعم Emscripten بث مخرجات مكتبة SDL2 عبر Canvas، ويوفر أيضًا دعمًا لـ OpenGL وEGL عبر WebGL، مما يسمح لك بتحويل التطبيقات والألعاب الرسومية إلى WebAssembly (على سبيل المثال، يوجد منفذ لمجموعة أدوات Qt ويدعم Unreal Engine 4 ووحدة محركات اللعبة، محرك رصاصة المادية). بالإضافة إلى تجميع التعليمات البرمجية في C/C++، يتم تطوير المشاريع بشكل منفصل لضمان إطلاق المترجمين الفوريين والأجهزة الافتراضية في المتصفحات للغات Lua وC# وPython وRuby وPerl. من الممكن أيضًا تطبيق واجهات أمامية غير Clang على LLVM، وهي متاحة للغات مثل Swift وRust وD وFortran.

التغييرات الرئيسية في Emscripten 3.0:

  • تم تحديث مكتبة musl C المستخدمة في emscripten إلى الإصدار 1.2.2 (تم استخدام الإصدار 2 في فرع Emscripten 1.1.15.x).
  • تمت إزالة جزء من الوظائف التي تم استخدامها بشكل أساسي داخل المشروع من مكتبة parseTools.js: RemovePointing، pointingLevels، RemoveAllPointing، isVoidType، isStructPointerType، isArrayType، isStructType، isVectorType، isStructuralType getStructuralTypeParts، getStructuralTypePartBits، isFunctionDef ، isPossibleFunctionType، isFunctionType، getReturnType، SplitTokenList، _IntToHex، IEEEunHex، Compiletime.isPointerType، Compiletime.isStructType، Compiletime.INT_TYPES، isType.
  • في قوالب shell.html وshell_minimal.html، يتم تبديل إخراج رسائل الخطأ التي تحدث أثناء تشغيل emscripten والتي يتم إخراجها بواسطة التطبيق عبر stderr افتراضيًا لاستخدام console.warn بدلاً من console.error.
  • تمت إضافة القدرة على تحديد ترميز نص معين يستخدم في أسماء الملفات. يمكن تحديد الترميز على شكل لاحقة عند تمرير اسم الملف، على سبيل المثال، "a.rsp.utf-8" أو "a.rsp.cp1251").

المصدر: opennet.ru

إضافة تعليق