Pular para o conteúdo

Compatibilidade

Phasis é verificado com três referências independentes:

  1. test262 — a suíte oficial de conformidade ECMAScript do TC39. 100 % da revisão fixada no repositório.
  2. 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.
  3. 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/test262 executa a suíte localmente. A matriz completa é executada no fluxo de trabalho compat-matrix.yml, iniciado manualmente, e não a cada push; uma execução bem-sucedida confirma seu instantâneo em COMPAT.md, que registra quando foi criado e em qual commit. A revisão da suíte é a fixada pelo submódulo test262 git.
  • Web Platform Tests — bin/wpt executa os testes importados. O fluxo de trabalho wpt.yml os executa em pushes para main e em pull requests que alteram src/, os testes ou os arquivos Composer.
  • Bibliotecas populares — composer test executa PHPUnit, incluindo a suíte de igualdade de bytes para bibliotecas populares em tests/Popular/. O fluxo de trabalho popular.yml a 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.