Ühilduvus
Phasis on kontrollitud kolme sõltumatu võrdlusalusega:
- test262 — ametlik TC39 ECMAScripti vastavustestide komplekt. 100 % hoidlas fikseeritud versioonist.
- Web Platform Tests — ametlik WHATWG / W3C testikomplekt ECMAScripti välistele veebi API-dele (fetch, XHR, WebSocket, Streams, Headers, Blob, kodeering, URL, struktureeritud kloonimine, katkestamine, hr-time, atob, crypto). Imporditud korpusest läbib 100 %.
- Populaarsed teegid — 204 laialdaselt kasutatavat npm paketti (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) käivituvad Node.js-ga baidi täpsusega.
Võrdlus teiste mootoritega
| Mootor | test262 | Märkused |
|---|---|---|
| Phasis | 100 % | Puhas PHP. Toetab ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Võrdluseks mõeldud C++ mootor. |
| SpiderMonkey (Firefox) | 99.6 % | Võrdluseks mõeldud C++ mootor. |
| JavaScriptCore (Safari) | 99.4 % | Võrdluseks mõeldud C++ mootor. |
| QuickJS | ~97 % | Kerge C-keelne manustatav mootor. |
| Hermes (React Native) | ~95 % | Mobiilseadmetele optimeeritud manustatav mootor. |
Andmed pärinevad allikast test262.fyi. Phasis kuulub tipptasemel tootmiskeskkonna brauserimootoritega samasse klassi.
Lehed
- test262 katvus — mida testitakse, kuidas testikomplekt töötab ja miks 100% on oluline.
- Veebi API-d (WPT) — Web Platform Pack ja Fetch Pack: URL, kodeering, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams ning crypto, WebSocket ja XMLHttpRequest.
- Streams — täielik WHATWG Streams Standard: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, järjekorrastrateegiad, asünkroonne iteratsioon.
- Populaarsed paketid — CI-s kontrollitav baitide võrdus Node.js-ga 204 npm paketi puhul, mis hõlmavad parsimist, mallindust, valideerimist, kuupäeva ja aega, matemaatikat, räsimist, otsingut ja erinevuste leidmist, värve, URL käsitlemist ja muud.
- Spetsifikatsiooni ulatus — kõik ECMAScripti sisseehitatud funktsioonid, süntaksivõimalused ja standardteegi objektid, mida Phasis sisaldab.
- Teadaolevad piirangud — kus Phasis erineb tahtlikult V8-st: jõudluse piir, mitme agendi samaaegsus, Wasm ja ainult brauseris saadaval olevad veebi API-d.
Kuidas mõõdetakse
- test262 —
bin/test262käivitab testikomplekti kohalikult. Täielik maatriks käivitataksecompat-matrix.ymltöövoos käsitsi, mitte iga tõuke korral; õnnestunud käivituse hetktõmmis salvestatakse failiCOMPAT.md, kus on kirjas selle loomise aeg ja vastav commit. Testikomplekti versioon on see, millele viitabtest262giti alamoodul. - Web Platform Tests —
bin/wptkäivitab imporditud testfixture'id. Töövoogwpt.ymlkäivitab need tõugetel harussemainja tõmbetaotlustel, mis muudavad failesrc/või testfixture'e või faile Composer. - Populaarsed teegid —
composer testkäivitab PHPUnit, sealhulgas populaarsete teekide baitide võrdustesti komplekti kataloogistests/Popular/. Töövoogpopular.ymlkäivitab selle sama teefiltriga ja loob kõik võrdlusandmed uuesti tegeliku Node'i abil, nii et aegunud võrdlusandmed tulevad esile, kui tarnitud teegi versiooni uuendatakse.
WPT või populaarse paketi regressioon nurjab selle põhjustanud tõmbetaotluse. test262 regressioon ilmneb järgmisel maatriksi käivitamisel.