إمسكريبتن

Emscripten هو مترجم يعتمد على LLVM / Clang يقوم بتحويل LLVM IR إلى WebAssembly ، [ 4 ] بشكل أساسي للتنفيذ في متصفحات الويب .

تتيح Emscripten تجميع التطبيقات والمكتبات المكتوبة بلغة C أو C++ مسبقًا وتشغيلها بكفاءة في متصفحات الويب، عادةً بسرعات مماثلة أو أسرع من JavaScript المفسرة أو المترجمة ديناميكيًا . بل إنها تحاكي نظام تشغيل POSIX بالكامل ، مما يُمكّن المبرمجين من استخدام وظائف من مكتبة C القياسية (libc). [ 5 ]

مع التطورات الحديثة لواجهة نظام WebAssembly (WASI) [ 6 ] وأوقات تشغيل WebAssembly مثل Node.js و Wasmtime [ 7 ] و Wasmer [ 8 ] ، يمكن أيضًا استخدام Emscripten للترجمة إلى WebAssembly للتنفيذ في تضمينات غير الويب أيضًا .

الاستخدام

استُخدمت Emscripten لنقل عدد من قواعد بيانات أكواد C/C++ إلى WebAssembly، بما في ذلك Unreal Engine 3 و SQLite [ 9 ] و MeshLab [ 10 ] و Bullet physics [ 11 ] و AutoCAD [ 12 ] ومجموعة فرعية من إطار عمل تطبيقات Qt [ 13 ] . وتشمل الأمثلة الأخرى للبرامج التي نُقلت إلى WebAssembly عبر Emscripten ما يلي :

محركات الألعاب

توفر محركات الألعاب Unity و Defold و Godot خيار تصدير إلى HTML5 باستخدام Emscripten. [ 14 ] [ 15 ] [ 16 ] كان محرك Unreal Engine يمتلك هذا الخيار ، ولكن تم نقله إلى إضافة برمجية من تطوير أحد أعضاء المجتمع. [ 17 ] أما محرك Source Engine ، فيحتوي على نسخة معدلة من Emscripten طورها المجتمع تُعرف باسم "HalfLife2JS". [ 18 ]

الأطر والأدوات

يُصدّر برنامج openFrameworks تطبيقات C++ الأصلية إلى HTML5 عبر Emscripten. [ 19 ] يسمح برنامج emscripten-qt بتجميع التطبيقات المكتوبة باستخدام إطار عمل تطبيقات Qt إلى WebAssembly. [ 13 ]

أرشفة البرمجيات

في ديسمبر 2014، أطلق أرشيف الإنترنت برنامج محاكاة DOSBox مُجمّع بلغة Emscripten لتوفير وصول عبر المتصفح إلى آلاف البرامج المؤرشفة لأنظمة MS-DOS وبرامج الكمبيوتر الشخصي. [ 20 ] [ 21 ] [ 22 ]

الخلق

ابتكر ألون زكاي برنامج Emscripten عام 2010، مدفوعًا برغبته في نقل نسخته المعدلة من لعبة التصويب من منظور الشخص الأول مفتوحة المصدر Sauerbraten ، والمعروفة باسم Syntensity ، [ 23 ] إلى الويب. Sauerbraten (المعروفة أيضًا باسم Cube 2 ) هي لعبة تصويب من منظور الشخص الأول مفتوحة المصدر، [ 24 ] أما Syntensity فكان مشروع زكاي الذي وسّع محرك Cube 2 لزيادة مرونته. مع ملاحظة تزايد استخدام التطبيقات عبر متصفحات الويب، بدأ زكاي بتطوير Emscripten كمترجم من LLVM إلى JavaScript، بهدف تمكين تشغيل أكواد C وC++ الموجودة، مثل محركات الألعاب، مباشرةً في المتصفح. في تدويناته الأولى، أوضح زكاي أن هدفه طويل الأمد هو "تشغيل Syntensity، أو نسخة مصغرة منها، على الويب"، [ 25 ] وقد أُصدر Emscripten كمصدر مفتوح بعد فترة وجيزة من تطويره الأولي، مما أتاح للمجتمع الأوسع فرصة التجربة والمساهمة فيه. [ 26 ] [ 27 ]

انظر أيضاً

مراجع

  1. زكاي، ألون (22 أكتوبر 2011). "إمسكريبتن: مُترجم من LLVM إلى جافا سكريبت" . وقائع المؤتمر الدولي المصاحب لجمعية ACM حول لغات وأنظمة البرمجة كائنية التوجه وتطبيقاتها . OOPSLA. الصفحات 301-312 . doi : 10.1145/2048147.2048224 . ISBN  978-1-4503-0942-4.
  2. "الإصدار 6.0.3" . 13 يوليو 2026. تم الاطلاع عليه في 14 يوليو 2026 .
  3. "emscripten-core/emscripten: Emscripten: مُترجم LLVM إلى JavaScript" . GitHub . C: 40.0%؛ C++: 34.4%؛ JavaScript: 17.4%.
  4. WebAssembly · ويكي emscripten-core/emscripten · GitHub
  5. كلارك، لين. "توحيد معايير WASI: واجهة نظام لتشغيل WebAssembly خارج الويب - مدونة موزيلا هاكس - مدونة مطوري الويب" . موزيلا هاكس - مدونة مطوري الويب . موزيلا . تاريخ الاسترجاع: 31 أكتوبر 2022 .
  6. مشروع Wasmtime. "WASI: واجهة نظام WebAssembly" . WASI.dev . مشروع Wasmtime . تم الاطلاع عليه بتاريخ 10 فبراير 2021 .
  7. مشروع Wasmtime. "Wasmtime: بيئة تشغيل صغيرة وفعّالة لـ WebAssembly وWASI" . Wasmtime.dev . مشروع Wasmtime . تاريخ الاسترجاع: 10 فبراير 2021 .
  8. واسمر. "واسمر: بيئة تشغيل WebAssembly الشاملة" . Wasmer.io . واسمر . تم الاطلاع عليه بتاريخ 10 فبراير 2021 .
  9. "فهرس توثيق SQLite3 WebAssembly وJavaScript" . SQLite . تم الاسترجاع بتاريخ 2023-05-08 .
  10. http://www.meshlabjs.net - الصفحة الرئيسية للنسخة التجريبية من برنامج MeshLab ، التي تعمل على المتصفح،
  11. "أمثلة وعروض توضيحية للنقل" . ويكي Emscripten على GitHub . تم الاطلاع عليه بتاريخ 1 مارس 2016 .
  12. "مستقبل أوتوكاد" . من خلال الواجهة . تم الاطلاع عليه بتاريخ 9 مايو 2018 ..
  13. 1 2 "Qt for WebAssembly" .
  14. "محرك ألعاب Unity يتجه إلى المتصفح بدون إضافات" . Ars Technica . 18 مارس 2014. تم الاطلاع عليه بتاريخ 1 مارس 2016 .
  15. "مستقبل البرمجة النصية في يونيتي - مدونة يونيتي" . مدونة تقنيات يونيتي . تم الاطلاع عليه بتاريخ 1 مارس 2016 .
  16. "تطوير صفحات HTML باستخدام Defold" . وثائق Defold . تم الاطلاع عليه بتاريخ 18-12-2023 .
  17. "تطوير HTML5 باستخدام Unreal" . وثائق Unreal . 18 ديسمبر 2023. تم الاطلاع عليه بتاريخ 18-12-2018 .
  18. هاف لايف 2: جافا سكريبت ، إم سورس، 13 أبريل 2025 ، تاريخ الاطلاع 14 أبريل 2025
  19. "إعداد openFrameworks لـ Emscripten" . openFrameworks . تم الاسترجاع في 4 مارس 2016 .
  20. أولهايزر، آبي (5 يناير 2015). "يمكنك الآن لعب ما يقرب من 2400 لعبة فيديو من نوع MS-DOS في متصفحك" . صحيفة واشنطن بوست . تاريخ الاسترجاع: 8 يناير 2015 .
  21. كل حذاء جديد معجزة بقلم جيسون سكوت (23 ديسمبر 2014)
  22. "بحث في أرشيف الإنترنت: "collection:softwarelibrary_msdos"" . archive.org . تم الاطلاع عليه بتاريخ 2016-03-01 .
  23. كريبكن (22 أبريل 2009). "Scriptensity: Intro" . Scriptensity . تم الاسترجاع في 24 يوليو 2025 .
  24. ^ "المكعب 2: سويربراتن" . sauerbraten.org . تم الاسترجاع 2025-07-24 .
  25. كريبكن (29-08-2010). "Scriptensity: Emscripten" . Scriptensity . تم الاسترجاع في 24-07-2025 .
  26. كريبكن (14 أغسطس 2010). "سكربتنسيتي: تحديث حول وجهة الأمور" . سكربتنسيتي . تم الاسترجاع في 24 يوليو 2025 .
  27. "اصنع ألعابك الخاصة باستخدام Syntensity" . www.dedoimedo.com . تاريخ الاسترجاع: 24 يوليو 2025 .