Uyumluluk
Phasis, birbirinden bağımsız üç referansla doğrulanır:
- test262 — resmi TC39 ECMAScript uyumluluk test paketi. Depoda sabitlenmiş revizyonun 100 %'i.
- Web Platform Tests — ECMAScript dışındaki Web API'leri için resmi WHATWG / W3C test paketi (fetch, XHR, WebSocket, Streams, Headers, Blob, kodlama, URL, structured-clone, abort, hr-time, atob, crypto). İçe aktarılan derlemin 100 %'i.
- Popüler kütüphaneler — yaygın kullanılan 204 npm paketi (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …), Node.js ile bayt düzeyinde aynı sonucu verir.
Diğer motorlarla karşılaştırma
| Motor | test262 | Notlar |
|---|---|---|
| Phasis | 100 % | Saf PHP. ES2024+ hedefler. |
| V8 (Node, Chrome) | 99.8 % | Referans C++ motoru. |
| SpiderMonkey (Firefox) | 99.6 % | Referans C++ motoru. |
| JavaScriptCore (Safari) | 99.4 % | Referans C++ motoru. |
| QuickJS | ~97 % | C ile yazılmış, gömülebilir hafif motor. |
| Hermes (React Native) | ~95 % | Mobil cihazlar için optimize edilmiş, gömülebilir motor. |
Rakamlar test262.fyi kaynağından alınmıştır. Phasis, üretim ortamındaki tarayıcı motorlarıyla birlikte en üst düzeyde yer alır.
Sayfalar
- test262 kapsamı — nelerin test edildiği, test paketinin nasıl çalıştığı ve 100%'nin neden önemli olduğu.
- Web API'leri (WPT) — Web Platform Pack ve Fetch Pack: URL, kodlama, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams ve ayrıca crypto, WebSocket ile XMLHttpRequest.
- Streams — WHATWG Streams Standard'ın tamamı: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, kuyruk stratejileri, asenkron yineleme.
- Popüler paketler — ayrıştırma, şablon oluşturma, doğrulama, tarih/saat, matematik, hashing, arama/fark, renk, URL işleme ve daha fazlasını kapsayan 204 npm pakette Node.js ile bayt eşitliği; CI bu kontrolü zorunlu kılar.
- Spesifikasyon kapsamı — Phasis tarafından sunulan tüm ECMAScript yerleşiklerini, sözdizimi özelliklerini ve standart kütüphane nesnelerini kapsar.
- Bilinen sınırlamalar — Phasis, V8'den hangi açılardan kasıtlı olarak ayrılır: performans sınırı, çoklu ajan eşzamanlılığı, Wasm, yalnızca tarayıcıda bulunan Web API'leri.
Nasıl ölçülüyor
- test262 —
bin/test262test paketini yerel olarak çalıştırır. Tam matris, her gönderim sonrasında değil elle başlatılancompat-matrix.ymliş akışında çalışır; başarılı bir çalıştırma, ne zaman ve hangi commit'e karşı alındığını kaydeden anlık görüntüsünüCOMPAT.mdkonumuna kaydeder. Test paketi revizyonu,test262git alt modülünde sabitlenmiş olandır. - Web Platform Tests —
bin/wpt, içe aktarılan fixture'ları çalıştırır.wpt.ymliş akışı,maindalına yapılan gönderimlerde vesrc/, fixture'lar veya Composer dosyalarını değiştiren pull request'lerde çalışır. - Popüler kütüphaneler —
composer test, PHPUnit dahiltests/Popular/altındaki popüler kütüphaneler için bayt eşitliği test paketini çalıştırır.popular.ymliş akışı aynı yol filtresini kullanır ve ayrıca her referans çıktısını gerçek Node üzerinde yeniden üretir; böylece satıcıdan alınan bir kütüphane güncellendiğinde eski referans çıktısı yakalanır.
WPT veya popüler paket regresyonu, buna yol açan pull request'i başarısız kılar. test262 regresyonu ise matris bir sonraki kez çalıştırıldığında ortaya çıkar.