التوافقية
تم التحقق من Phasis بمقارنته بثلاثة مراجع مستقلة:
- test262 — مجموعة مطابقة ECMAScript الرسمية من TC39. 100 % من المراجعة المثبتة في المستودع.
- Web Platform Tests — المجموعة الرسمية من WHATWG / W3C لواجهات Web APIs غير التابعة لـ ECMAScript (fetch وXHR وWebSocket وStreams وHeaders وBlob والترميز وURL والاستنساخ المنظم والإلغاء وhr-time وatob وcrypto). 100 % من مجموعة الاختبارات المستوردة.
- المكتبات الشائعة — 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 testPHPUnit، بما في ذلك مجموعة اختبار التطابق البايتّي للمكتبات الشائعة تحتtests/Popular/. ويشغّله سير عملpopular.ymlوفق مرشح المسارات نفسه، كما يعيد إنشاء كل مرجع باستخدام Node الفعلي، كي يُكتشف المرجع القديم عند تحديث مكتبة مضمّنة.
يؤدي تراجع في WPT أو في حزمة شائعة إلى فشل طلب السحب الذي تسبب فيه. أما تراجع test262 فيظهر عند تشغيل المصفوفة في المرة التالية.