Compatibilidade
Phasis é verificado com três referências independentes:
- test262 — a suíte oficial de conformidade ECMAScript do TC39. 100 % da revisão fixada no repositório.
- Web Platform Tests — a suíte oficial WHATWG / W3C para APIs da Web que não fazem parte do ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, codificação, URL, structured-clone, abort, hr-time, atob, crypto). 100 % do conjunto importado.
- Bibliotecas populares — 204 pacotes npm amplamente usados (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) são executados com bytes idênticos aos de Node.js.
Comparação com outros mecanismos
| Mecanismo | test262 | Observações |
|---|---|---|
| Phasis | 100 % | PHP puro. Compatível com ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Mecanismo C++ de referência. |
| SpiderMonkey (Firefox) | 99.6 % | Mecanismo C++ de referência. |
| JavaScriptCore (Safari) | 99.4 % | Mecanismo C++ de referência. |
| QuickJS | ~97 % | Mecanismo leve e incorporável em C. |
| Hermes (React Native) | ~95 % | Mecanismo incorporável, otimizado para dispositivos móveis. |
Dados de test262.fyi. Phasis está entre os melhores, junto com os mecanismos de produção dos navegadores.
Páginas
- test262 cobertura — o que é testado, como a suíte é executada e por que 100% importa.
- APIs da Web (WPT) — Web Platform Pack e Fetch Pack: URL, codificação, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, além de crypto, WebSocket e XMLHttpRequest.
- Streams — padrão WHATWG Streams completo: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, estratégias de enfileiramento e iteração assíncrona.
- Pacotes populares — igualdade de bytes verificada por CI com Node.js para 204 pacotes npm em análise, modelagem, validação, data/hora, matemática, hashing, pesquisa/diff, cores, tratamento de URL e muito mais.
- Superfície da especificação — cada recurso integrado do ECMAScript, recurso sintático e objeto da biblioteca padrão incluído em Phasis.
- Limitações conhecidas — onde Phasis diverge intencionalmente de V8: limite de desempenho, concorrência multiagente, Wasm e APIs da Web exclusivas dos navegadores.
Como as medições são feitas
- test262 —
bin/test262executa a suíte localmente. A matriz completa é executada no fluxo de trabalhocompat-matrix.yml, iniciado manualmente, e não a cada push; uma execução bem-sucedida confirma seu instantâneo emCOMPAT.md, que registra quando foi criado e em qual commit. A revisão da suíte é a fixada pelo submódulotest262git. - Web Platform Tests —
bin/wptexecuta os testes importados. O fluxo de trabalhowpt.ymlos executa em pushes paramaine em pull requests que alteramsrc/, os testes ou os arquivos Composer. - Bibliotecas populares —
composer testexecuta PHPUnit, incluindo a suíte de igualdade de bytes para bibliotecas populares emtests/Popular/. O fluxo de trabalhopopular.ymla executa com o mesmo filtro de caminhos e também regenera cada referência com o Node real, detectando referências desatualizadas quando uma biblioteca fornecida é atualizada.
Uma regressão no WPT ou em um pacote popular faz falhar o pull request que a introduziu. Uma regressão test262 aparece na próxima execução da matriz.