Kompatibilität
Phasis wird mit drei unabhängigen Referenzsystemen überprüft:
- test262 — die offizielle ECMAScript-Konformitätssuite des TC39. 100 % der im Repository fixierten Revision.
- Web Platform Tests — die offizielle WHATWG-/W3C-Suite für Web-APIs außerhalb von ECMAScript (Fetch, XHR, WebSocket, Streams, Headers, Blob, Encoding, URL, structured-clone, Abort, hr-time, atob, Crypto). 100 % des importierten Korpus.
- Beliebte Bibliotheken — 204 weit verbreitete npm-Pakete (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) werden bytegleich zu Node.js ausgeführt.
Im Vergleich zu anderen Engines
| Engine | test262 | Hinweise |
|---|---|---|
| Phasis | 100 % | Reines PHP. Unterstützt ES2024+. |
| V8 (Node, Chrome) | 99.8 % | C++-Referenz-Engine. |
| SpiderMonkey (Firefox) | 99.6 % | C++-Referenz-Engine. |
| JavaScriptCore (Safari) | 99.4 % | C++-Referenz-Engine. |
| QuickJS | ~97 % | Leichtgewichtige, einbettbare Engine in C. |
| Hermes (React Native) | ~95 % | Einbettbare Engine, optimiert für Mobilgeräte. |
Zahlen von test262.fyi. Phasis gehört zur Spitzengruppe neben den produktiven Browser-Engines.
Seiten
- test262-Abdeckung — was getestet wird, wie die Testsuite läuft und warum 100 % wichtig sind.
- Web-APIs (WPT) — Web Platform Pack und Fetch Pack: URL, Kodierung, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams sowie crypto, WebSocket und XMLHttpRequest.
- Streams — vollständiger WHATWG-Streams-Standard: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, Warteschlangenstrategien und asynchrone Iteration.
- Beliebte Pakete — durch CI geprüfte Byte-Gleichheit mit Node.js für 204 npm-Pakete aus den Bereichen Parsing, Templating, Validierung, Datum/Uhrzeit, Mathematik, Hashing, Suche/Diff, Farbe, URL-Verarbeitung und mehr.
- Spezifikationsumfang — alle ECMAScript-Built-ins, Syntaxmerkmale und Standardbibliotheksobjekte, die Phasis bereitstellt.
- Bekannte Einschränkungen — wo Phasis bewusst von V8 abweicht: Leistungsgrenze, nebenläufige Ausführung mehrerer Agents, Wasm und browsergebundene Web-APIs.
So wird gemessen
- test262 —
bin/test262führt die Suite lokal aus. Die vollständige Matrix läuft im Workflowcompat-matrix.yml, der manuell statt bei jedem Push gestartet wird. Bei erfolgreichem Lauf wird der Snapshot unterCOMPAT.mdgespeichert; darin sind Zeitpunkt und Commit des Laufs festgehalten. Die Suite-Revision entspricht der des fixierten git-Submodulstest262. - Web Platform Tests —
bin/wptführt die importierten Fixtures aus. Der Workflowwpt.ymlführt sie bei Pushes aufmainund bei Pull Requests aus, diesrc/, die Fixtures oder die Composer-Dateien ändern. - Beliebte Bibliotheken —
composer testführt PHPUnit einschließlich der Byte-Gleichheitssuite für beliebte Bibliotheken untertests/Popular/aus. Der Workflowpopular.ymlführt sie bei denselben Pfadfiltern aus und erstellt außerdem alle Referenzwerte erneut mit echtem Node. So werden veraltete Referenzwerte erkannt, wenn eine vendorte Bibliothek aktualisiert wird.
Eine Regression bei WPT oder einem beliebten Paket lässt den Pull Request, der sie verursacht, fehlschlagen. Eine test262-Regression wird beim nächsten Lauf der Matrix sichtbar.