İçeriğe geç

Uyumluluk

Phasis, birbirinden bağımsız üç referansla doğrulanır:

  1. test262 — resmi TC39 ECMAScript uyumluluk test paketi. Depoda sabitlenmiş revizyonun 100 %'i.
  2. 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.
  3. 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/test262 test paketini yerel olarak çalıştırır. Tam matris, her gönderim sonrasında değil elle başlatılan compat-matrix.yml iş 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.md konumuna kaydeder. Test paketi revizyonu, test262 git alt modülünde sabitlenmiş olandır.
  • Web Platform Tests — bin/wpt, içe aktarılan fixture'ları çalıştırır. wpt.yml iş akışı, main dalına yapılan gönderimlerde ve src/, fixture'lar veya Composer dosyalarını değiştiren pull request'lerde çalışır.
  • Popüler kütüphaneler — composer test, PHPUnit dahil tests/Popular/ altındaki popüler kütüphaneler için bayt eşitliği test paketini çalıştırır. popular.yml iş 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.