Liigu sisu juurde

Ühilduvus

Phasis on kontrollitud kolme sõltumatu võrdlusalusega:

  1. test262 — ametlik TC39 ECMAScripti vastavustestide komplekt. 100 % hoidlas fikseeritud versioonist.
  2. 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 %.
  3. 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/test262 käivitab testikomplekti kohalikult. Täielik maatriks käivitatakse compat-matrix.yml töövoos käsitsi, mitte iga tõuke korral; õnnestunud käivituse hetktõmmis salvestatakse faili COMPAT.md, kus on kirjas selle loomise aeg ja vastav commit. Testikomplekti versioon on see, millele viitab test262 giti alamoodul.
  • Web Platform Tests — bin/wpt käivitab imporditud testfixture'id. Töövoog wpt.yml käivitab need tõugetel harusse main ja tõmbetaotlustel, mis muudavad faile src/ või testfixture'e või faile Composer.
  • Populaarsed teegid — composer test käivitab PHPUnit, sealhulgas populaarsete teekide baitide võrdustesti komplekti kataloogis tests/Popular/. Töövoog popular.yml kä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.