Pereiti prie turinio

Suderinamumas

Phasis tikrinamas pagal tris nepriklausomus etalonus:

  1. test262 — oficialus TC39 ECMAScript atitikties testų rinkinys. 100 % prisegtos saugykloje versijos testų.
  2. 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.
  3. 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/test262 testų rinkinį vykdo vietoje. Visa matrica vykdoma compat-matrix.yml darbo 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ą nurodo test262 git submodulis.
  • Web Platform Tests — bin/wpt vykdo importuotus testus. wpt.yml darbo eiga juos vykdo pakeitus main arba pateikus užklausą sujungti pakeitimus, jei pakeisti src/, testai arba Composer failai.
  • Populiarios bibliotekos — composer test vykdo PHPUnit, įskaitant populiarių bibliotekų baitų lygybės testų rinkinį, esantį tests/Popular/. popular.yml darbo 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ą.