
# Ü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](https://test262.fyi). Phasis kuulub tipptasemel tootmiskeskkonna brauserimootoritega samasse klassi.

## Lehed

- **[test262 katvus](https://phasis.inline0.dev/et/docs/compatibility/test262)** — mida testitakse, kuidas testikomplekt töötab ja miks 100% on oluline.
- **[Veebi API-d (WPT)](https://phasis.inline0.dev/et/docs/compatibility/web-apis)** — Web Platform Pack ja Fetch Pack: URL, kodeering, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams ning crypto, WebSocket ja XMLHttpRequest.
- **[Streams](https://phasis.inline0.dev/et/docs/compatibility/streams)** — täielik WHATWG Streams Standard: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, järjekorrastrateegiad, asünkroonne iteratsioon.
- **[Populaarsed paketid](https://phasis.inline0.dev/et/docs/compatibility/popular-packages)** — 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](https://phasis.inline0.dev/et/docs/compatibility/spec-surface)** — kõik ECMAScripti sisseehitatud funktsioonid, süntaksivõimalused ja standardteegi objektid, mida Phasis sisaldab.
- **[Teadaolevad piirangud](https://phasis.inline0.dev/et/docs/compatibility/limitations)** — 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`](https://github.com/inline0/phasis/blob/main/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.
