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