
# Kompatibilitas

Phasis diverifikasi menggunakan tiga acuan independen:

1. **test262** — rangkaian uji kesesuaian ECMAScript resmi dari TC39. **100 %** dari revisi yang dipatok di repositori.
2. **Web Platform Tests** — rangkaian uji WHATWG / W3C resmi untuk API Web non-ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, encoding, URL, structured-clone, abort, hr-time, atob, crypto). **100 %** pada korpus yang diimpor.
3. **Pustaka populer** — 204 paket npm yang banyak digunakan (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) berjalan dengan hasil yang identik byte demi byte dengan Node.js.

## Dibandingkan dengan engine lain

| Engine | test262 | Catatan |
|---|---:|---|
| **Phasis** | **100 %** | PHP murni. Menargetkan ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Engine C++ acuan. |
| SpiderMonkey (Firefox) | 99.6 % | Engine C++ acuan. |
| JavaScriptCore (Safari) | 99.4 % | Engine C++ acuan. |
| QuickJS | ~97 % | Engine ringan yang dapat disematkan, ditulis dalam C. |
| Hermes (React Native) | ~95 % | Engine yang dapat disematkan, dioptimalkan untuk perangkat seluler. |

Angka dari [test262.fyi](https://test262.fyi). Phasis berada di jajaran teratas bersama engine browser produksi.

## Halaman

- **[test262 cakupan](https://phasis.inline0.dev/id/docs/compatibility/test262)** — apa yang diuji, cara rangkaian dijalankan, alasan 100% penting.
- **[API Web (WPT)](https://phasis.inline0.dev/id/docs/compatibility/web-apis)** — Web Platform Pack dan Fetch Pack: URL, encoding, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, serta crypto, WebSocket, dan XMLHttpRequest.
- **[Streams](https://phasis.inline0.dev/id/docs/compatibility/streams)** — WHATWG Streams Standard lengkap: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategi antrean, iterasi async.
- **[Paket populer](https://phasis.inline0.dev/id/docs/compatibility/popular-packages)** — kesamaan byte yang dijaga CI dengan Node.js untuk 204 paket npm di bidang parsing, templating, validasi, tanggal/waktu, matematika, hashing, pencarian/diff, warna, penanganan URL, dan lainnya.
- **[Cakupan spesifikasi](https://phasis.inline0.dev/id/docs/compatibility/spec-surface)** — setiap built-in ECMAScript, fitur sintaksis, dan objek pustaka standar yang disertakan Phasis.
- **[Batasan yang diketahui](https://phasis.inline0.dev/id/docs/compatibility/limitations)** — bagian yang sengaja membuat Phasis berbeda dari V8: batas performa, konkurensi multi-agen, Wasm, API Web khusus browser.

## Cara pengukuran

- **test262** — `bin/test262` menjalankan rangkaian uji secara lokal. Matriks lengkap berjalan dalam workflow `compat-matrix.yml`, yang dimulai secara manual, bukan pada setiap push; run yang berhasil mengirimkan snapshot-nya ke [`COMPAT.md`](https://github.com/inline0/phasis/blob/main/COMPAT.md), yang mencatat kapan snapshot diambil dan commit yang digunakan. Revisi rangkaian uji adalah yang dipatok oleh submodul git `test262`.
- **Web Platform Tests** — `bin/wpt` menjalankan fixture yang diimpor. Workflow `wpt.yml` menjalankannya pada push ke `main` dan pull request yang mengubah `src/`, fixture, atau file Composer.
- **Pustaka populer** — `composer test` menjalankan PHPUnit termasuk rangkaian kesamaan byte pustaka populer di bawah `tests/Popular/`. Workflow `popular.yml` menjalankannya dengan filter jalur yang sama dan juga membuat ulang setiap acuan menggunakan Node sungguhan, sehingga acuan usang terdeteksi saat pustaka vendored diperbarui.

Regresi WPT atau paket populer akan menggagalkan pull request yang menyebabkannya. Regresi test262 akan muncul saat matriks dijalankan berikutnya.
