Siirry sisältöön

Yhteensopivuus

Phasis on tarkistettu kolmen toisistaan riippumattoman vertailukohdan avulla:

  1. test262 — virallinen TC39:n ECMAScript-yhteensopivuustestipaketti. 100 % arkistoon kiinnitetystä versiosta.
  2. 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.
  3. 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/test262 suorittaa testisarjan paikallisesti. Koko matriisi suoritetaan compat-matrix.yml-työnkulussa, joka käynnistetään käsin eikä jokaisen pushin yhteydessä; onnistunut suoritus tallentaa tilannekuvansa tiedostoon COMPAT.md, johon merkitään, milloin se otettiin ja mihin commit-tunnukseen se perustuu. Testisarjan versio on test262-git-alimoduulin lukitsema versio.
  • Web Platform Tests — bin/wpt suorittaa tuodut testitapaukset. wpt.yml-työnkulku suorittaa ne pushien yhteydessä haaraan main sekä pull requesteissa, joissa muutetaan src/-tiedostoja, testitapauksia tai Composer-tiedostoja.
  • Suositut kirjastot — composer test suorittaa PHPUnit-testit, mukaan lukien suosittujen kirjastojen tavuntarkan vertailun testisarjassa tests/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.