Compatibilidad
Phasis se verifica con tres oráculos independientes:
- test262 — la suite oficial de conformidad con ECMAScript de TC39. 100 % de la revisión fijada en el repositorio.
- Web Platform Tests — la suite oficial de WHATWG / W3C para las API web que no pertenecen a ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, codificación, URL, structured-clone, abort, hr-time, atob, crypto). 100 % del corpus importado.
- Bibliotecas populares — 204 paquetes npm muy utilizados (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) se ejecutan con resultados idénticos byte a byte a Node.js.
Frente a otros motores
| Motor | test262 | Notas |
|---|---|---|
| Phasis | 100 % | PHP puro. Compatible con ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Motor de referencia en C++. |
| SpiderMonkey (Firefox) | 99.6 % | Motor de referencia en C++. |
| JavaScriptCore (Safari) | 99.4 % | Motor de referencia en C++. |
| QuickJS | ~97 % | Motor ligero e integrable en C. |
| Hermes (React Native) | ~95 % | Motor integrable optimizado para móviles. |
Cifras de test262.fyi. Phasis está entre los mejores, junto a los motores de los navegadores de producción.
Páginas
- Cobertura de test262 — qué se prueba, cómo se ejecuta la suite y por qué importa 100%.
- API web (WPT) — Web Platform Pack y Fetch Pack: URL, codificación, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, además de crypto, WebSocket y XMLHttpRequest.
- Streams — estándar WHATWG Streams completo: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, estrategias de cola e iteración asíncrona.
- Paquetes populares — igualdad byte a byte con Node.js, verificada en CI, para 204 paquetes npm en análisis, plantillas, validación, fecha/hora, matemáticas, hashing, búsqueda/diferencias, color, gestión de URL y más.
- Superficie de la especificación — cada elemento integrado de ECMAScript, característica sintáctica y objeto de biblioteca estándar que ofrece Phasis.
- Limitaciones conocidas — dónde Phasis se desvía intencionadamente de V8: límite de rendimiento, concurrencia multiagente, Wasm y API web exclusivas del navegador.
Cómo se mide
- test262 —
bin/test262ejecuta la suite localmente. La matriz completa se ejecuta en el flujo de trabajocompat-matrix.yml, que se inicia manualmente y no en cada envío; una ejecución correcta guarda su instantánea enCOMPAT.md, donde se registra cuándo se tomó y con qué commit. La revisión de la suite es la fijada por el submódulo gittest262. - Web Platform Tests —
bin/wptejecuta los fixtures importados. El flujo de trabajowpt.ymllos ejecuta al enviar cambios amainy en solicitudes de extracción que modifiquensrc/, los fixtures o los archivos Composer. - Bibliotecas populares —
composer testejecuta PHPUnit, incluida la suite de igualdad byte a byte de bibliotecas populares, bajotests/Popular/. El flujo de trabajopopular.ymlla ejecuta con el mismo filtro de rutas y también regenera cada oráculo con Node real, para detectar oráculos obsoletos cuando se actualiza una biblioteca incluida en el repositorio.
Una regresión de WPT o de un paquete popular hace fallar la solicitud de extracción que la provoca. Una regresión de test262 aparece la próxima vez que se ejecuta la matriz.