Kompatibilitas
Phasis diverifikasi menggunakan tiga acuan independen:
- test262 — rangkaian uji kesesuaian ECMAScript resmi dari TC39. 100 % dari revisi yang dipatok di repositori.
- 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.
- 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. Phasis berada di jajaran teratas bersama engine browser produksi.
Halaman
- test262 cakupan — apa yang diuji, cara rangkaian dijalankan, alasan 100% penting.
- API Web (WPT) — Web Platform Pack dan Fetch Pack: URL, encoding, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, serta crypto, WebSocket, dan XMLHttpRequest.
- Streams — WHATWG Streams Standard lengkap: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategi antrean, iterasi async.
- Paket populer — 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 — setiap built-in ECMAScript, fitur sintaksis, dan objek pustaka standar yang disertakan Phasis.
- Batasan yang diketahui — bagian yang sengaja membuat Phasis berbeda dari V8: batas performa, konkurensi multi-agen, Wasm, API Web khusus browser.
Cara pengukuran
- test262 —
bin/test262menjalankan rangkaian uji secara lokal. Matriks lengkap berjalan dalam workflowcompat-matrix.yml, yang dimulai secara manual, bukan pada setiap push; run yang berhasil mengirimkan snapshot-nya keCOMPAT.md, yang mencatat kapan snapshot diambil dan commit yang digunakan. Revisi rangkaian uji adalah yang dipatok oleh submodul gittest262. - Web Platform Tests —
bin/wptmenjalankan fixture yang diimpor. Workflowwpt.ymlmenjalankannya pada push kemaindan pull request yang mengubahsrc/, fixture, atau file Composer. - Pustaka populer —
composer testmenjalankan PHPUnit termasuk rangkaian kesamaan byte pustaka populer di bawahtests/Popular/. Workflowpopular.ymlmenjalankannya 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.