انتقل إلى المحتوى

التوافقية

تم التحقق من Phasis بمقارنته بثلاثة مراجع مستقلة:

  1. test262 — مجموعة مطابقة ECMAScript الرسمية من TC39. 100 % من المراجعة المثبتة في المستودع.
  2. Web Platform Tests — المجموعة الرسمية من WHATWG / W3C لواجهات Web APIs غير التابعة لـ ECMAScript (fetch وXHR وWebSocket وStreams وHeaders وBlob والترميز وURL والاستنساخ المنظم والإلغاء وhr-time وatob وcrypto). 100 % من مجموعة الاختبارات المستوردة.
  3. المكتبات الشائعة — 204 حزم npm واسعة الاستخدام (acorn وlodash وzod وramda وimmer وredux وdate-fns وmarked وfuse.js وsemver وvalidator وغيرها…) تعمل بتطابق بايتّي مع Node.js.

مقارنة بالمحركات الأخرى

المحرك test262 ملاحظات
Phasis 100 % PHP خالص. يستهدف ES2024 وما بعده.
V8 (Node وChrome) 99.8 % محرك C++ مرجعي.
SpiderMonkey (Firefox) 99.6 % محرك C++ مرجعي.
JavaScriptCore (Safari) 99.4 % محرك C++ مرجعي.
QuickJS ~97 % محرك خفيف قابل للتضمين مكتوب بلغة C.
Hermes (React Native) ~95 % محرك قابل للتضمين ومحسّن للأجهزة المحمولة.

الأرقام من test262.fyi. يقع Phasis ضمن الفئة الأعلى إلى جانب محركات المتصفحات المستخدمة في الإنتاج.

الصفحات

  • تغطية test262 — ما الذي يُختبر، وكيف تعمل المجموعة، ولماذا تهم نسبة 100%.
  • واجهات Web APIs (WPT) — حزمتا Web Platform وFetch: URL والترميز وatob/btoa وstructuredClone والأداء وHeaders وBlob وAbortSignal وEventTarget وStreams، إضافةً إلى crypto وWebSocket وXMLHttpRequest.
  • Streams — معيار WHATWG Streams كاملًا: ReadableStream وWritableStream وTransformStream وBYOB وtee وpipeTo/pipeThrough واستراتيجيات وضع العناصر في قائمة الانتظار والتكرار غير المتزامن.
  • الحزم الشائعة — تحقق من التطابق البايتّي عبر CI مع Node.js لـ 204 حزم npm في التحليل والقوالب والتحقق والتاريخ والوقت والرياضيات والتجزئة والبحث والمقارنة ومعالجة URL وغيرها.
  • نطاق المواصفات — جميع العناصر المضمّنة في ECMAScript والميزات النحوية وكائنات المكتبة القياسية التي يوفّرها Phasis.
  • القيود المعروفة — المواضع التي يختلف فيها Phasis عمدًا عن V8: سقف الأداء والتزامن متعدد الوكلاء وWasm وواجهات Web APIs الخاصة بالمتصفح.

كيفية القياس

  • test262 — يشغّل bin/test262 المجموعة محليًا. وتُشغّل المصفوفة الكاملة ضمن سير عمل compat-matrix.yml، الذي يبدأ يدويًا بدلًا من تشغيله مع كل دفعة تغييرات؛ وتُحفَظ لقطة التشغيل الناجح في COMPAT.md، موضّحًا فيها وقت التقاطها والالتزام الذي استندت إليه. وإصدار المجموعة هو الإصدار المثبت بوحدة git الفرعية test262.
  • Web Platform Tests — يشغّل bin/wpt التجهيزات المستوردة. ويشغّل سير عمل wpt.yml الاختبارات عند إرسال تغييرات إلى main وعند طلبات السحب التي تغيّر src/ أو التجهيزات أو ملفات Composer.
  • المكتبات الشائعة — يشغّل composer test PHPUnit، بما في ذلك مجموعة اختبار التطابق البايتّي للمكتبات الشائعة تحت tests/Popular/. ويشغّله سير عمل popular.yml وفق مرشح المسارات نفسه، كما يعيد إنشاء كل مرجع باستخدام Node الفعلي، كي يُكتشف المرجع القديم عند تحديث مكتبة مضمّنة.

يؤدي تراجع في WPT أو في حزمة شائعة إلى فشل طلب السحب الذي تسبب فيه. أما تراجع test262 فيظهر عند تشغيل المصفوفة في المرة التالية.