ويب أسمبلي

من ويكيبيديا، الموسوعة الحرة
اذهب إلى التنقل اذهب إلى البحث
WebAssembly
WebAssembly Logo.svg
معلومات عامة
التصنيف
التنميط
ظهرت في
مارس 2017
صممها
الرخصة
التطوير
الإصدار الأول
الإصدار الأخير
المستودع
التأثير
متأثرة بـ
  • asm.js
  • PNaCl
متفرقات
امتدادات الملفات
.wasm ,.wat
موقع الويب

لُغَةُ تَجْمِيعِ اَلْوِيب (بالإنجليزية: WebAssembly) ويشار إليها اختصارًا بـ(وَازِمْ Wasm) هي معيار مفتوح يُّعرِّف صِيغة محمولة للترميز-الثنائي binary-code -(بَايْنَرِي كُودْ)- لتنفيذ برنامجٍ ما، ويكمن الهدف وراء تقنية لغة تجميع الويب بتمكين تنفيذ برامج عالية الأداء على صفحات الويب، ومع ذلك فقد صُممت لغة تجميع الويب بشكل يجعلها قابلة للتنفيذ ومتكاملة مع بيئات العمل الأخرى كذلك وليس فقط على صفحات الويب، ويتضمن ذلك قابلية تنفيذ "برمجيات لغة تجميع الويب" بحد ذاتها (standalone).[3] اُعتمدت لغة تجميع الويب في 2019 الخامس من ديسبمبر من طرف رابطة الشبكة العالمية كمعيار في متصفحات الويب، بجانب جافاسكربت وCSS وHTML.[4] تُتيح لغة تجميع الويب لمطوري الويب تنفيذ برمجيات غير مكتوبة بجافا سكربت على المتصفح بشكل مباشر، كما تقدم حزمة Emscripten SDK لأي لغة داعمة لـLLVM مثل (C، C++، Rust) وغيرها من اللغات الداعمة، إمكانية أن تُترجم إلى ملف بَايْنَرِي للغة تجميع الويب.[5]

ليس الهدف من لغة تجميع الويب أنْ تستبدل جافا سكربت، بل تعمل معها جنبًا إلى جنب، في الأماكن التي تكون فيها جافا سكربت بطيئة أو غير مناسبة لأداء وظيفة معينة في تطبيق الويب.

التاريخ[عدل]

أُعلِنَ عن لغة تجميع الويب لأول مرة في 2015 [6]، وقد أثبت المفهوم لأول مرة من خلال تنفيذ Unity's Angry Bots على متصفح فاير فوكس[7]، قوقل كروم،[8] مايكروسوفت إيدج[9]، وقد سبقتها بعض التقنيات لإجراء محاولات أولية مثل مشروع "آزِمْ" asm.js من موزيلا، ومشروع PNaCI من قوقل،[10][11] وقد استندت التجارب الأولية إلى نموذج asm.js من موزيلا.[12]

asm.js [13]- آزِمْ.ج س:[عدل]

يفرع من لغة جافا سكرِبت، صُمِّم ليكون قابلًا للتوليد من لغات أخرى كلغة سِ C على سبيل المثال، ويكمن الفرق الجوهريّ بينها وبين الجافا سكربت العادية أن "آزِمْ" asm.js ستحافظ على أداء أفضل من جافا سكربت العادية. لا تزال تُستخدم في المتصفحات التي لا تدعم لغة تجميع الويب WebAssembly، أو المتعطِّلة فيها لأسباب أمنية.

في فبراير 2018، قامت "مجموعة عمل لغة تجميع الويب" WebAssembly Working Group بنشر ثلاث مسودات للعمل على توثيق كل من المواصفات والمعايير الأساسية [14][15]، و واجهة جافا سكربت JavaScript Interface[16] وكذلك Web API[17] التي تحتاج لغة تجميع الويب.

مثال[عدل]

شفرة برمجية بلغة السي، في مقابل شفرة بلغة تجميع الويب:

شفرة برمجية مكتوبة بلغة C صيغة .wat النصية للغة تجميع الويب صيغة .wasm الشفرة الثنائية (binary) للغة تجميع الويب
int factorial(int n) {
  if (n == 0)
    return 1;
  else
    return n * factorial(n-1);
}
(func (param i64) (result i64)
  local.get 0
  i64.eqz
  if (result i64)
      i64.const 1
  else
      local.get 0
      local.get 0
      i64.const 1
      i64.sub
      call 0
      i64.mul
  end)
00 61 73 6D 01 00 00 00
01 00 01 60 01 73 01 73 06
03 00 01 00 02
0A 00 01
00 00
20 00
50
04 7E
42 01
05
20 00
20 00
42 01
7D
10 00
7E
0B
0B 15 17

المراجع[عدل]

  1. ^ وصلة مرجع: http://webassembly.org/roadmap/. الوصول: 21 مايو 2017.
  2. أ ب "Release 1.1"، 9 ديسمبر 2019، اطلع عليه بتاريخ 10 ديسمبر 2019. {{استشهاد ويب}}: تحقق من التاريخ في: |access-date= و|date= (مساعدة)
  3. ^ "Introduction — WebAssembly 1.1 (Draft 2021-11-22)"، webassembly.github.io، مؤرشف من الأصل في 22 نوفمبر 2021، اطلع عليه بتاريخ 22 نوفمبر 2021.
  4. ^ "WebAssembly 1.0 Becomes a W3C Recommendation and the Fourth Language to Run Natively in Browsers"، InfoQ (باللغة الإنجليزية)، مؤرشف من الأصل في 25 نوفمبر 2021، اطلع عليه بتاريخ 22 نوفمبر 2021.
  5. ^ emscripten-core/emscripten، 22 نوفمبر 2021، مؤرشف من الأصل في 30 نوفمبر 2021، اطلع عليه بتاريخ 22 نوفمبر 2021
  6. ^ "Going public launch bug · Issue #150 · WebAssembly/design"، GitHub (باللغة الإنجليزية)، مؤرشف من الأصل في 21 نوفمبر 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  7. ^ "A WebAssembly Milestone: Experimental Support in Multiple Browsers – Mozilla Hacks - the Web developer blog"، Mozilla Hacks – the Web developer blog (باللغة الإنجليزية)، مؤرشف من الأصل في 28 يناير 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  8. ^ "Experimental support for WebAssembly in V8 · V8"، v8.dev، مؤرشف من الأصل في 3 يونيو 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  9. ^ Blog, Microsoft Edge (15 مارس 2016)، "Previewing WebAssembly experiments in Microsoft Edge"، Microsoft Edge Blog (باللغة الإنجليزية)، مؤرشف من الأصل في 18 أغسطس 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  10. ^ "Google Is to Remove Support for PNaCl"، InfoQ (باللغة الإنجليزية)، مؤرشف من الأصل في 28 أكتوبر 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  11. ^ "Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web"، TechCrunch (باللغة الإنجليزية)، مؤرشف من الأصل في 2 يونيو 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  12. ^ "WebAssembly: a binary format for the web"، 2ality.com، مؤرشف من الأصل في 23 أكتوبر 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  13. ^ "asm.js"، asmjs.org، مؤرشف من الأصل في 24 نوفمبر 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  14. ^ "WebAssembly First Public Working Drafts | W3C News" (باللغة الإنجليزية)، مؤرشف من الأصل في 16 يوليو 2021، اطلع عليه بتاريخ 04 ديسمبر 2021.
  15. ^ "wasm core"، https://www.w3.org، 15 فبراير 2018، مؤرشف من الأصل في 8 مارس 2021، اطلع عليه بتاريخ 12 أبريل 2021. {{استشهاد ويب}}: روابط خارجية في |موقع= (مساعدة)
  16. ^ "Wasm JavaScript API"، https://www.w3.org/، 15 فبراير 2018، مؤرشف من الأصل في 30 نوفمبر 2020، اطلع عليه بتاريخ 12 أبريل 2021. {{استشهاد ويب}}: روابط خارجية في |موقع= (مساعدة)
  17. ^ "wasm Web API"، https://www.w3.org/، 15 فبراير 2018، مؤرشف من الأصل في 19 أبريل 2021، اطلع عليه بتاريخ 12 فبراير 2021. {{استشهاد ويب}}: روابط خارجية في |موقع= (مساعدة)