Compatibilitate
Phasis este verificat cu trei surse independente de referință:
- test262 — suita oficială de conformitate TC39 ECMAScript. 100 % din revizia fixată în depozit.
- Web Platform Tests — suita oficială WHATWG / W3C pentru API-urile web care nu țin de ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, encoding, URL, structured-clone, abort, hr-time, atob, crypto). 100 % în corpusul importat.
- Biblioteci populare — 204 pachete npm utilizate pe scară largă (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) se execută identic la nivel de octet cu Node.js.
Comparativ cu alte motoare
| Motor | test262 | Note |
|---|---|---|
| Phasis | 100 % | PHP pur. Țintește ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Motor C++ de referință. |
| SpiderMonkey (Firefox) | 99.6 % | Motor C++ de referință. |
| JavaScriptCore (Safari) | 99.4 % | Motor C++ de referință. |
| QuickJS | ~97 % | Motor C ușor și integrabil. |
| Hermes (nativ React) | ~95 % | Motor integrabil optimizat pentru dispozitive mobile. |
Valori din test262.fyi. Phasis se află în liga superioară, alături de motoarele browserelor de producție.
Pagini
- test262 acoperire — ce este testat, cum rulează suita și de ce contează 100%.
- API-uri web (WPT) — Web Platform Pack și Fetch Pack: URL, codificare, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, plus crypto, WebSocket și XMLHttpRequest.
- Streams — întregul standard WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategii de coadă, iterație asincronă.
- Pachete populare — egalitate la nivel de octet cu Node.js, verificată de CI, pentru 204 npm pachete din domeniile parsării, șabloanelor, validării, datei/orei, matematicii, hashing-ului, căutării/diferențelor, culorilor, gestionării URL și altele.
- Suprafața specificației — fiecare funcție încorporată, caracteristică sintactică și obiect de bibliotecă standard livrat de Phasis.
- Limitări cunoscute — unde Phasis se abate intenționat de la V8: limite de performanță, concurența multi-agent, Wasm, API-uri web disponibile doar în browser.
Cum se măsoară
- test262 —
bin/test262rulează suita local. Matricea completă rulează în fluxul de lucrucompat-matrix.yml, pornit manual, nu la fiecare push; o rulare reușită trimite instantaneul rezultat înCOMPAT.md, care consemnează când a fost realizat și cu ce commit. Revizia suitei este cea fixată de submodulultest262git. - Web Platform Tests —
bin/wptrulează fixture-urile importate. Fluxul de lucruwpt.ymlle rulează la push-uri înmainși la cererile pull care modificăsrc/, fixture-urile sau fișierele Composer. - Biblioteci populare —
composer testrulează PHPUnit, inclusiv suita de egalitate la nivel de octet pentru bibliotecile populare, întests/Popular/. Fluxul de lucrupopular.ymlîl rulează cu același filtru de căi și regenerează fiecare sursă de referință cu Node real, astfel încât o sursă de referință învechită este detectată când se actualizează o bibliotecă inclusă în depozit.
O regresie WPT sau într-un pachet popular eșuează cererea pull care o provoacă. O regresie test262 apare la următoarea rulare a matricei.