
# Compatibilitate

Phasis este verificat cu trei surse independente de referință:

1. **test262** — suita oficială de conformitate TC39 ECMAScript. **100 %** din revizia fixată în depozit.
2. **Web Platform Tests** — suita oficială WHATWG / W3C pentru API-urile web care nu țin de ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, encoding, URL, structured-clone, abort, hr-time, atob, crypto). **100 %** în corpusul importat.
3. **Biblioteci populare** — 204 pachete npm utilizate pe scară largă (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) se execută identic la nivel de octet cu Node.js.

## Comparativ cu alte motoare

| Motor | test262 | Note |
|---|---:|---|
| **Phasis** | **100 %** | PHP pur. Țintește ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Motor C++ de referință. |
| SpiderMonkey (Firefox) | 99.6 % | Motor C++ de referință. |
| JavaScriptCore (Safari) | 99.4 % | Motor C++ de referință. |
| QuickJS | ~97 % | Motor C ușor și integrabil. |
| Hermes (nativ React) | ~95 % | Motor integrabil optimizat pentru dispozitive mobile. |

Valori din [test262.fyi](https://test262.fyi). Phasis se află în liga superioară, alături de motoarele browserelor de producție.

## Pagini

- **[test262 acoperire](https://phasis.inline0.dev/ro/docs/compatibility/test262)** — ce este testat, cum rulează suita și de ce contează 100%.
- **[API-uri web (WPT)](https://phasis.inline0.dev/ro/docs/compatibility/web-apis)** — Web Platform Pack și Fetch Pack: URL, codificare, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, plus crypto, WebSocket și XMLHttpRequest.
- **[Streams](https://phasis.inline0.dev/ro/docs/compatibility/streams)** — întregul standard WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, strategii de coadă, iterație asincronă.
- **[Pachete populare](https://phasis.inline0.dev/ro/docs/compatibility/popular-packages)** — egalitate la nivel de octet cu Node.js, verificată de CI, pentru 204 npm pachete din domeniile parsării, șabloanelor, validării, datei/orei, matematicii, hashing-ului, căutării/diferențelor, culorilor, gestionării URL și altele.
- **[Suprafața specificației](https://phasis.inline0.dev/ro/docs/compatibility/spec-surface)** — fiecare funcție încorporată, caracteristică sintactică și obiect de bibliotecă standard livrat de Phasis.
- **[Limitări cunoscute](https://phasis.inline0.dev/ro/docs/compatibility/limitations)** — unde Phasis se abate intenționat de la V8: limite de performanță, concurența multi-agent, Wasm, API-uri web disponibile doar în browser.

## Cum se măsoară

- **test262** — `bin/test262` rulează suita local. Matricea completă rulează în fluxul de lucru `compat-matrix.yml`, pornit manual, nu la fiecare push; o rulare reușită trimite instantaneul rezultat în [`COMPAT.md`](https://github.com/inline0/phasis/blob/main/COMPAT.md), care consemnează când a fost realizat și cu ce commit. Revizia suitei este cea fixată de submodulul `test262` git.
- **Web Platform Tests** — `bin/wpt` rulează fixture-urile importate. Fluxul de lucru `wpt.yml` le rulează la push-uri în `main` și la cererile pull care modifică `src/`, fixture-urile sau fișierele Composer.
- **Biblioteci populare** — `composer test` rulează PHPUnit, inclusiv suita de egalitate la nivel de octet pentru bibliotecile populare, în `tests/Popular/`. Fluxul de lucru `popular.yml` îl rulează cu același filtru de căi și regenerează fiecare sursă de referință cu Node real, astfel încât o sursă de referință învechită este detectată când se actualizează o bibliotecă inclusă în depozit.

O regresie WPT sau într-un pachet popular eșuează cererea pull care o provoacă. O regresie test262 apare la următoarea rulare a matricei.
