본문으로 건너뛰기

호환성

Phasis은 서로 독립적인 세 가지 기준으로 검증됩니다:

  1. test262 — 공식 TC39 ECMAScript 적합성 테스트 모음입니다. 저장소에 고정된 리비전의 100 % 를 통과합니다.
  2. Web Platform Tests — ECMAScript가 아닌 웹 API(fetch, XHR, WebSocket, Streams, Headers, Blob, 인코딩, URL, structured-clone, abort, hr-time, atob, crypto)에 대한 공식 WHATWG / W3C 테스트 모음입니다. 가져온 테스트 모음에서 100 % 를 통과합니다.
  3. 인기 라이브러리 — 널리 사용되는 npm 패키지 204개(acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …)가 Node.js와 바이트 단위로 동일하게 실행됩니다.

다른 엔진과 비교

엔진 test262 참고 사항
Phasis 100 % 순수 PHP. ES2024 이상을 대상으로 합니다.
V8 (Node, Chrome) 99.8 % 기준 C++ 엔진입니다.
SpiderMonkey (Firefox) 99.6 % 기준 C++ 엔진입니다.
JavaScriptCore (Safari) 99.4 % 기준 C++ 엔진입니다.
QuickJS ~97 % C로 작성된 경량 임베드형 엔진입니다.
Hermes (React Native) ~95 % 모바일에 최적화된 임베드형 엔진입니다.

수치는 test262.fyi의 자료입니다. Phasis은 프로덕션 브라우저 엔진과 함께 최상위권에 속합니다.

페이지

  • test262 커버리지 — 무엇을 테스트하는지, 테스트 모음이 어떻게 실행되는지, 100%가 중요한 이유를 설명합니다.
  • 웹 API(WPT) — Web Platform Pack과 Fetch Pack: URL, 인코딩, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams와 crypto, WebSocket, XMLHttpRequest를 다룹니다.
  • Streams — WHATWG Streams Standard 전체: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, 대기열 전략, 비동기 반복을 다룹니다.
  • 인기 패키지 — 파싱, 템플릿, 유효성 검사, 날짜/시간, 수학, 해싱, 검색/차이 비교, 색상, URL 처리 등을 포함한 204개의 npm 패키지가 Node.js와 바이트 단위로 일치하는지 CI에서 검사합니다.
  • 명세 범위 — Phasis이 제공하는 모든 ECMAScript 내장 기능, 구문 기능, 표준 라이브러리 객체를 다룹니다.
  • 알려진 제한 사항 — Phasis이 V8와 의도적으로 다른 부분: 성능 상한, 멀티 에이전트 동시성, Wasm, 브라우저 전용 웹 API.

측정 방법

  • test262 — bin/test262이 테스트 모음을 로컬에서 실행합니다. 전체 매트릭스는 매 푸시 때가 아니라 수동으로 시작하는 compat-matrix.yml 워크플로에서 실행됩니다. 성공적으로 실행되면 실행 시점과 기준 커밋을 기록하는 스냅샷이 COMPAT.md에 커밋됩니다. 테스트 모음 리비전은 test262 git 서브모듈에 고정된 버전입니다.
  • Web Platform Tests — bin/wpt이 가져온 픽스처를 실행합니다. wpt.yml 워크플로는 main에 푸시하거나 src/, 픽스처 또는 Composer 파일을 변경하는 풀 리퀘스트가 있을 때 실행됩니다.
  • 인기 라이브러리 — composer test이 tests/Popular/에서 인기 라이브러리 바이트 일치 테스트 모음을 포함한 PHPUnit을 실행합니다. popular.yml 워크플로는 같은 경로 필터를 적용해 테스트를 실행하고, 실제 Node에서 모든 기준값도 다시 생성하므로 vendored 라이브러리의 버전을 올릴 때 오래된 기준값을 감지합니다.

WPT 또는 인기 패키지에서 회귀가 발생하면 이를 일으킨 풀 리퀘스트가 실패합니다. test262의 회귀는 다음 매트릭스 실행 때 나타납니다.