Suderinamumas
Phasis tikrinamas pagal tris nepriklausomus etalonus:
- test262 — oficialus TC39 ECMAScript atitikties testų rinkinys. 100 % prisegtos saugykloje versijos testų.
- Web Platform Tests — oficialus WHATWG / W3C rinkinys, skirtas ne ECMAScript žiniatinklio API (fetch, XHR, WebSocket, Streams, Headers, Blob, koduotė, URL, structured-clone, abort, hr-time, atob, crypto). 100 % importuoto testų rinkinio.
- Populiarios bibliotekos — 204 plačiai naudojamų npm paketų (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) vykdomi taip pat kaip Node.js, iki paskutinio baito.
Palyginimas su kitais varikliais
| Variklis | test262 | Pastabos |
|---|---|---|
| Phasis | 100 % | Grynas PHP. Palaiko ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Etaloninis C++ variklis. |
| SpiderMonkey (Firefox) | 99.6 % | Etaloninis C++ variklis. |
| JavaScriptCore (Safari) | 99.4 % | Etaloninis C++ variklis. |
| QuickJS | ~97 % | Lengvas C kalba įterpiamas variklis. |
| Hermes (React Native) | ~95 % | Įterpiamas variklis, optimizuotas mobiliesiems įrenginiams. |
Skaičiai iš test262.fyi. Phasis yra aukščiausio lygio grupėje kartu su gamybinėmis naršyklių realizacijomis.
Puslapiai
- test262 aprėptis — kas tikrinama, kaip veikia testų rinkinys ir kodėl svarbu 100%.
- Žiniatinklio API (WPT) — Web Platform Pack ir Fetch Pack: URL, koduotė, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, taip pat crypto, WebSocket ir XMLHttpRequest.
- Srautai — visas WHATWG Streams standartas: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, eilių strategijos, asinchroninis iteravimas.
- Populiarūs paketai — CI tikrinama baitų lygybė su Node.js, skirta 204 npm paketų analizavimui, šablonams, validavimui, datoms ir laikui, matematikai, maišos skaičiavimui, paieškai ir skirtumams, spalvoms, URL apdorojimui ir kitoms sritims.
- Specifikacijos aprėptis — kiekviena ECMAScript įtaisytoji priemonė, sintaksės funkcija ir standartinės bibliotekos objektas, kurį pateikia Phasis.
- Žinomi apribojimai — sritys, kuriose Phasis sąmoningai skiriasi nuo V8: našumo riba, kelių agentų lygiagretumas, Wasm, tik naršyklėse veikiančios žiniatinklio API.
Kaip atliekami matavimai
- test262 —
bin/test262testų rinkinį vykdo vietoje. Visa matrica vykdomacompat-matrix.ymldarbo eigoje, kuri paleidžiama rankiniu būdu, o ne su kiekvienu pakeitimu; sėkmingai ją įvykdžius, momentinė kopija įrašoma įCOMPAT.md, kur nurodoma, kada ji sukurta ir su kuriuo pakeitimu. Testų rinkinio versija yra ta, kurią nurodotest262git submodulis. - Web Platform Tests —
bin/wptvykdo importuotus testus.wpt.ymldarbo eiga juos vykdo pakeitusmainarba pateikus užklausą sujungti pakeitimus, jei pakeistisrc/, testai arba Composer failai. - Populiarios bibliotekos —
composer testvykdo PHPUnit, įskaitant populiarių bibliotekų baitų lygybės testų rinkinį, esantįtests/Popular/.popular.ymldarbo eiga vykdo jį taikydama tą patį kelių filtrą ir taip pat iš naujo sukuria kiekvieną etaloną naudojant tikrą Node, kad pasenęs etalonas būtų aptiktas atnaujinus vendorizuotą biblioteką.
Dėl WPT arba populiaraus paketo regresijos nepavyksta ją sukėlęs pakeitimų sujungimo prašymas. Dėl test262 regresijos problema paaiškėja kitą kartą paleidus matricą.