Lewati ke konten

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. 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/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, 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.