
# 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](https://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ı](https://phasis.inline0.dev/tr/docs/compatibility/test262)** — nelerin test edildiği, test paketinin nasıl çalıştığı ve 100%'nin neden önemli olduğu.
- **[Web API'leri (WPT)](https://phasis.inline0.dev/tr/docs/compatibility/web-apis)** — 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](https://phasis.inline0.dev/tr/docs/compatibility/streams)** — WHATWG Streams Standard'ın tamamı: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, kuyruk stratejileri, asenkron yineleme.
- **[Popüler paketler](https://phasis.inline0.dev/tr/docs/compatibility/popular-packages)** — 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ı](https://phasis.inline0.dev/tr/docs/compatibility/spec-surface)** — Phasis tarafından sunulan tüm ECMAScript yerleşiklerini, sözdizimi özelliklerini ve standart kütüphane nesnelerini kapsar.
- **[Bilinen sınırlamalar](https://phasis.inline0.dev/tr/docs/compatibility/limitations)** — 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`](https://github.com/inline0/phasis/blob/main/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.
