Kompatibilita
Phasis je ověřen ve třech nezávislých testovacích sadách:
- test262 — oficiální sada TC39 pro ověření shody s ECMAScriptem. 100 % testů revize připnuté v repozitáři.
- Web Platform Tests — oficiální sada WHATWG / W3C pro webová API mimo ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, kódování, URL, strukturované klonování, abort, hr-time, atob, crypto). 100 % v importovaném korpusu.
- Oblíbené knihovny — 204 hojně používaných balíčků npm (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) se spouští se shodnými bajty jako Node.js.
Srovnání s jinými stroji
| Stroj | test262 | Poznámky |
|---|---|---|
| Phasis | 100 % | Čisté PHP. Podporuje ES2024 a novější. |
| V8 (Node, Chrome) | 99.8 % | Referenční stroj v C++. |
| SpiderMonkey (Firefox) | 99.6 % | Referenční stroj v C++. |
| JavaScriptCore (Safari) | 99.4 % | Referenční stroj v C++. |
| QuickJS | ~97 % | Lehký stroj v C, který lze vložit do jiného programu. |
| Hermes (React Native) | ~95 % | Vložitelný stroj optimalizovaný pro mobilní zařízení. |
Údaje pocházejí z test262.fyi. Phasis patří do nejvyšší skupiny spolu s produkčními stroji v prohlížečích.
Stránky
- Pokrytí test262 — co se testuje, jak sada běží a proč záleží na hodnotě 100 %.
- Webová API (WPT) — Web Platform Pack a Fetch Pack: URL, kódování, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams a také crypto, WebSocket a XMLHttpRequest.
- Streams — celý standard WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategie řazení do fronty a asynchronní iterace.
- Oblíbené balíčky — testy byteové shody s Node.js pro 204 balíčků npm, které pokrývají parsování, šablony, ověřování, datum a čas, matematiku, hashování, vyhledávání a rozdíly, barvy, práci s URL a další oblasti; jejich úspěch kontroluje CI.
- Povrch specifikace — všechny vestavěné funkce, syntaktické prvky a objekty standardní knihovny, které Phasis nabízí.
- Známá omezení — oblasti, ve kterých se Phasis záměrně odchyluje od V8: limity výkonu, souběžnost více agentů, Wasm a webová API dostupná pouze v prohlížeči.
Jak se měří
- test262 — sadu lokálně spouští
bin/test262. Úplná matice se spouští v pracovním postupucompat-matrix.yml, který se zahajuje ručně, nikoli při každém odeslání změn; úspěšné spuštění uloží snímek doCOMPAT.md, kde je uvedeno datum pořízení a odpovídající revize. Používá se revize sady připnutá v podmodulu Gittest262. - Web Platform Tests — importované testovací případy spouští
bin/wpt. Pracovní postupwpt.ymlje spouští při odeslání změn domaina při požadavcích na stažení, které měnísrc/, testovací případy nebo soubory Composer. - Oblíbené knihovny —
composer testspouští PHPUnit, včetně testovací sady byteové shody oblíbených knihoven v rámcitests/Popular/. Pracovní postuppopular.ymlji spouští při stejných změnách a také znovu vytváří všechny referenční výsledky pomocí skutečného Node, aby se odhalily zastaralé výsledky při aktualizaci přibalené knihovny.
Regrese ve WPT nebo oblíbeném balíčku zablokuje požadavek na stažení, který ji způsobil. Regrese v test262 se projeví při příštím spuštění matice.