Združljivost
Phasis je preverjen s tremi neodvisnimi viri:
- test262 — uradna zbirka testov skladnosti TC39 ECMAScript. 100 % različice, določene v repozitoriju.
- Web Platform Tests — uradna zbirka WHATWG / W3C za spletne API-je, ki niso del ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, kodiranje, URL, structured-clone, abort, hr-time, atob, crypto). 100 % uvoženega korpusa.
- Priljubljene knjižnice — 204 pogosto uporabljanih paketov npm (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) se izvede z enakimi bajti kot Node.js.
V primerjavi z drugimi pogoni
| Pogon | test262 | Opombe |
|---|---|---|
| Phasis | 100 % | Čisti PHP. Cilja na ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Referenčni pogon C++. |
| SpiderMonkey (Firefox) | 99.6 % | Referenčni pogon C++. |
| JavaScriptCore (Safari) | 99.4 % | Referenčni pogon C++. |
| QuickJS | ~97 % | Lahek vgradljiv pogon v jeziku C. |
| Hermes (izvorni React) | ~95 % | Vgradljiv pogon, optimiziran za mobilne naprave. |
Številke iz test262.fyi. Phasis je v najvišjem razredu skupaj s produkcijskimi brskalniškimi pogoni.
Strani
- test262 pokritost — kaj se testira, kako se izvaja zbirka in zakaj je pomembno 100%.
- Spletni API-ji (WPT) — Web Platform Pack in Fetch Pack: URL, kodiranje, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams ter crypto, WebSocket in XMLHttpRequest.
- Tokovi — celoten standard WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategije čakalnih vrst, asinhrona iteracija.
- Priljubljeni paketi — enakost bajtov, preverjena v CI, z Node.js za 204 paketov npm na področjih razčlenjevanja, predlog, preverjanja veljavnosti, datumov in časa, matematike, zgoščevanja, iskanja in primerjanja razlik, barv, obravnave URL ter drugje.
- Površina specifikacije — vse vgrajene funkcije ECMAScript, sintaktične zmožnosti in objekti standardne knjižnice, ki jih ponuja Phasis.
- Znane omejitve — področja, kjer Phasis namerno odstopa od V8: omejitve zmogljivosti, sočasnost več agentov, Wasm in spletni API-ji, ki so na voljo samo v brskalniku.
Kako se meri
- test262 —
bin/test262zažene zbirko lokalno. Celotna matrika se izvaja v poteku delacompat-matrix.yml, ki se zažene ročno in ne ob vsakem potisku; uspešen zagon shrani posnetek vCOMPAT.md, kjer je zabeleženo, kdaj je bil posnet in za katero objavo. Različica zbirke je določena s podmodulomtest262git. - Web Platform Tests —
bin/wptzažene uvožene preizkusne primere. Potek delawpt.ymljih zažene ob potiskih vmainin zahtevah za vključitev sprememb, ki spremenijosrc/, preizkusne primere ali datoteke Composer. - Priljubljene knjižnice —
composer testzažene PHPUnit, vključno z zbirko testov enakosti bajtov priljubljenih knjižnic podtests/Popular/. Potek delapopular.ymljih zažene z enakim filtrom poti in znova ustvari tudi vse referenčne rezultate v pravem Node, zato se zastarel referenčni rezultat zazna ob posodobitvi vključene knjižnice.
Regresija v WPT ali priljubljenem paketu povzroči neuspeh zahteve za vključitev sprememb, ki jo je uvedla. Regresija test262 se pokaže ob naslednjem zagonu matrike.