Přejít k obsahu

Kompatibilita

Phasis je ověřen ve třech nezávislých testovacích sadách:

  1. test262 — oficiální sada TC39 pro ověření shody s ECMAScriptem. 100 % testů revize připnuté v repozitáři.
  2. 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.
  3. 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 postupu compat-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 do COMPAT.md, kde je uvedeno datum pořízení a odpovídající revize. Používá se revize sady připnutá v podmodulu Git test262.
  • Web Platform Tests — importované testovací případy spouští bin/wpt. Pracovní postup wpt.yml je spouští při odeslání změn do main a při požadavcích na stažení, které mění src/, testovací případy nebo soubory Composer.
  • Oblíbené knihovny — composer test spouští PHPUnit, včetně testovací sady byteové shody oblíbených knihoven v rámci tests/Popular/. Pracovní postup popular.yml ji 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.