Yhteensopivuus
Phasis on tarkistettu kolmen toisistaan riippumattoman vertailukohdan avulla:
- test262 — virallinen TC39:n ECMAScript-yhteensopivuustestipaketti. 100 % arkistoon kiinnitetystä versiosta.
- Web Platform Tests — virallinen WHATWG:n / W3C:n testipaketti muille kuin ECMAScriptin Web-rajapinnoille (fetch, XHR, WebSocket, Streams, Headers, Blob, merkistökoodaus, URL, structured-clone, abort, hr-time, atob, crypto). 100 % tuodusta aineistosta.
- Suositut kirjastot — 204 laajalti käytettyä npm-pakettia (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) suoritetaan tavu tavulta samalla tavalla kuin ohjelmassa Node.js.
Verrattuna muihin moottoreihin
| Moottori | test262 | Huomautuksia |
|---|---|---|
| Phasis | 100 % | Puhdas PHP. Tukee ES2024+:aa. |
| V8 (Node, Chrome) | 99.8 % | C++-viitemoottori. |
| SpiderMonkey (Firefox) | 99.6 % | C++-viitemoottori. |
| JavaScriptCore (Safari) | 99.4 % | C++-viitemoottori. |
| QuickJS | ~97 % | Kevyt C:llä toteutettu moottori, jonka voi upottaa ohjelmaan. |
| Hermes (React Native) | ~95 % | Upotettava mobiililaitteille optimoitu moottori. |
Luvut lähteestä test262.fyi. Phasis kuuluu parhaiden joukkoon tuotantokäytössä olevien selainmoottorien rinnalla.
Sivut
- test262-kattavuus — mitä testataan, miten testisarja suoritetaan ja miksi 100% on tärkeä.
- Web API:t (WPT) — Web Platform Pack ja Fetch Pack: URL, koodaus, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams sekä crypto, WebSocket ja XMLHttpRequest.
- Streams — koko WHATWG Streams Standard: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, jonotusstrategiat ja asynkroninen iterointi.
- Suositut paketit — CI:ssä porttiehdolla tehtävä tavuntarkka vertailu Node.js-työkalulla 204 npm paketille jäsennyksen, mallipohjien, validoinnin, päivämäärien ja ajan, matematiikan, hajautuksen, haun ja erotusten, värien, URL-käsittelyn ja muun osalta.
- Teknisten tietojen kattavuus — kaikki ECMAScriptin sisäänrakennetut ominaisuudet, syntaksin piirteet ja standardikirjaston objektit, jotka Phasis sisältää.
- Tunnetut rajoitukset — missä Phasis poikkeaa tarkoituksella V8: suorituskyvyn yläraja, rinnakkaisuus usean agentin kesken, Wasm ja vain selaimessa käytettävät Web API:t.
Miten se mitataan
- test262 —
bin/test262suorittaa testisarjan paikallisesti. Koko matriisi suoritetaancompat-matrix.yml-työnkulussa, joka käynnistetään käsin eikä jokaisen pushin yhteydessä; onnistunut suoritus tallentaa tilannekuvansa tiedostoonCOMPAT.md, johon merkitään, milloin se otettiin ja mihin commit-tunnukseen se perustuu. Testisarjan versio ontest262-git-alimoduulin lukitsema versio. - Web Platform Tests —
bin/wptsuorittaa tuodut testitapaukset.wpt.yml-työnkulku suorittaa ne pushien yhteydessä haaraanmainsekä pull requesteissa, joissa muutetaansrc/-tiedostoja, testitapauksia tai Composer-tiedostoja. - Suositut kirjastot —
composer testsuorittaa PHPUnit-testit, mukaan lukien suosittujen kirjastojen tavuntarkan vertailun testisarjassatests/Popular/.popular.yml-työnkulku suorittaa testit samojen polkusuodattimien perusteella ja luo lisäksi kaikki vertailutulokset uudelleen aidolla Node-ympäristöllä, jotta vanhentunut vertailutulos havaitaan vendoroidun kirjaston päivityksen yhteydessä.
WPT:n tai suositun paketin regressio hylkää sen aiheuttavan pull requestin. test262-regressio tulee näkyviin seuraavalla matriisin suorituskerralla.