Treci la conținut

Compatibilitate

Phasis este verificat cu trei surse independente de referință:

  1. test262 — suita oficială de conformitate TC39 ECMAScript. 100 % din revizia fixată în depozit.
  2. 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.
  3. 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/test262 rulează suita local. Matricea completă rulează în fluxul de lucru compat-matrix.yml, pornit manual, nu la fiecare push; o rulare reușită trimite instantaneul rezultat în COMPAT.md, care consemnează când a fost realizat și cu ce commit. Revizia suitei este cea fixată de submodulul test262 git.
  • Web Platform Tests — bin/wpt rulează fixture-urile importate. Fluxul de lucru wpt.yml le rulează la push-uri în main și la cererile pull care modifică src/, fixture-urile sau fișierele Composer.
  • Biblioteci populare — composer test rulează PHPUnit, inclusiv suita de egalitate la nivel de octet pentru bibliotecile populare, în tests/Popular/. Fluxul de lucru popular.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.