Ugrás a tartalomhoz

Kompatibilitás

A Phasis megfelelőségét három független viszonyítási alappal ellenőrizzük:

  1. test262 — a hivatalos TC39 ECMAScript megfelelőségi tesztcsomag. A tárolóban rögzített verzió 100 %-a.
  2. 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.
  3. 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/test262 helyben futtatja a tesztcsomagot. A teljes mátrix a compat-matrix.yml munkafolyamatban fut, amelyet nem minden push alkalmával, hanem kézzel indítanak el; a sikeres futás pillanatfelvételét a rendszer a COMPAT.md helyre menti, rögzítve a készítés idejét és az alapjául szolgáló commitot. A tesztcsomag revíziója megegyezik a test262 git almodulban rögzített revízióval.
  • Web Platform Tests — a bin/wpt futtatja az importált tesztfájlokat. A wpt.yml munkafolyamat push esetén akkor indul, ha a módosítás a main, illetve olyan pull requestet érint, amely a src/ fájlokat, a tesztfájlokat vagy a Composer fájlokat módosítja.
  • Népszerű könyvtárak — a composer test futtatja a PHPUnit tesztcsomagot, benne a népszerű könyvtárak tests/Popular/ alatti bájtpontos egyezésének vizsgálatával. A popular.yml munkafolyamat 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.