Saltar al contenido

Compatibilidad

Phasis se verifica con tres oráculos independientes:

  1. test262 — la suite oficial de conformidad con ECMAScript de TC39. 100 % de la revisión fijada en el repositorio.
  2. 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.
  3. 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/test262 ejecuta la suite localmente. La matriz completa se ejecuta en el flujo de trabajo compat-matrix.yml, que se inicia manualmente y no en cada envío; una ejecución correcta guarda su instantánea en COMPAT.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 git test262.
  • Web Platform Tests — bin/wpt ejecuta los fixtures importados. El flujo de trabajo wpt.yml los ejecuta al enviar cambios a main y en solicitudes de extracción que modifiquen src/, los fixtures o los archivos Composer.
  • Bibliotecas populares — composer test ejecuta PHPUnit, incluida la suite de igualdad byte a byte de bibliotecas populares, bajo tests/Popular/. El flujo de trabajo popular.yml la 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.