Kompatibilitás
A Phasis megfelelőségét három független viszonyítási alappal ellenőrizzük:
- test262 — a hivatalos TC39 ECMAScript megfelelőségi tesztcsomag. A tárolóban rögzített verzió 100 %-a.
- Web Platform Tests — a hivatalos WHATWG / W3C tesztcsomag a nem ECMAScript-alapú webes API-khoz (fetch, XHR, WebSocket, Streams, Headers, Blob, encoding, URL, structured-clone, abort, hr-time, atob, crypto). Az importált tesztkészlet 100 %-a sikeres.
- Népszerű könyvtárak — 204 széles körben használt npm csomag (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) fut a Node.js kimenetével bájtról bájtra egyezően.
Más motorokkal összevetve
| Motor | test262 | Megjegyzések |
|---|---|---|
| Phasis | 100 % | Tisztán PHP. ES2024+ a cél. |
| V8 (Node, Chrome) | 99.8 % | Referencia C++ motor. |
| SpiderMonkey (Firefox) | 99.6 % | Referencia C++ motor. |
| JavaScriptCore (Safari) | 99.4 % | Referencia C++ motor. |
| QuickJS | ~97 % | Könnyű, C-ben írt, beágyazható motor. |
| Hermes (React Native) | ~95 % | Beágyazható motor, mobileszközökre optimalizálva. |
Az adatok innen származnak: test262.fyi. A Phasis a gyártási böngészőmotorok élmezőnyébe tartozik.
Oldalak
- test262 lefedettség — mi kerül tesztelésre, hogyan fut a tesztcsomag, és miért fontos a 100%.
- Web APIs (WPT) — Web Platform Pack és Fetch Pack: URL, kódolás, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, valamint crypto, WebSocket és XMLHttpRequest.
- Streams — a WHATWG Streams Standard teljes egésze: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, sorbaállítási stratégiák, aszinkron iteráció.
- Népszerű csomagok — CI által ellenőrzött, Node.js kimenetével való bájtpontos egyezés 204 npm csomag esetében, a feldolgozás, sablonkezelés, érvényesítés, dátum és idő, matematika, hashelés, keresés és diff, színkezelés, URL kezelés és egyéb területeken.
- Specifikációs felület — az Phasis által biztosított összes ECMAScript beépített elem, szintaktikai funkció és standardkönyvtári objektum.
- Ismert korlátok — ahol az Phasis szándékosan eltér a V8 működésétől: teljesítménykorlát, több ügynök egyidejű futtatása, Wasm, csak böngészőben elérhető Web API-k.
A mérés módja
- test262 — a
bin/test262helyben futtatja a tesztcsomagot. A teljes mátrix acompat-matrix.ymlmunkafolyamatban fut, amelyet nem minden push alkalmával, hanem kézzel indítanak el; a sikeres futás pillanatfelvételét a rendszer aCOMPAT.mdhelyre menti, rögzítve a készítés idejét és az alapjául szolgáló commitot. A tesztcsomag revíziója megegyezik atest262git almodulban rögzített revízióval. - Web Platform Tests — a
bin/wptfuttatja az importált tesztfájlokat. Awpt.ymlmunkafolyamat push esetén akkor indul, ha a módosítás amain, illetve olyan pull requestet érint, amely asrc/fájlokat, a tesztfájlokat vagy a Composer fájlokat módosítja. - Népszerű könyvtárak — a
composer testfuttatja a PHPUnit tesztcsomagot, benne a népszerű könyvtáraktests/Popular/alatti bájtpontos egyezésének vizsgálatával. Apopular.ymlmunkafolyamat azonos útvonalszűrővel fut, és valódi Node alatt újragenerálja az összes viszonyítási adatot is, így egy vendorizált könyvtár frissítésekor kiderül, ha valamelyik elavult.
A WPT vagy népszerűcsomag-regresszió miatt az azt okozó pull request meghiúsul. A test262 regresszió a következő mátrixfuttatáskor derül ki.