Съвместимост
Phasis е проверен спрямо три независими източника:
- test262 — официалният тестов пакет за съответствие с ECMAScript на TC39. 100 % от версията, фиксирана в хранилището.
- Web Platform Tests — официалният пакет на WHATWG / W3C за Web API извън ECMAScript (Fetch, XHR, WebSocket, Streams, Headers, Blob, кодиране, URL, структурирано клониране, прекъсване, hr-time, atob, crypto). 100 % от внесения корпус.
- Популярни библиотеки — 204 широко използвани пакета npm (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, производителност, Headers, Blob, AbortSignal, EventTarget, Streams, както и crypto, WebSocket и XMLHttpRequest.
- Потоци — пълният стандарт WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, стратегии за поставяне в опашка и асинхронна итерация.
- Популярни пакети — проверявано в CI побайтово равенство с Node.js за 204 пакета npm в областите анализиране, шаблони, валидация, дати и час, математика, хеширане, търсене и сравнение, цветове, обработка на URL и др.
- Обхват на спецификацията — всички вградени елементи на ECMAScript, синтактични функции и обекти от стандартната библиотека, които Phasis включва.
- Известни ограничения — къде Phasis умишлено се различава от V8: ограничение в производителността, едновременна работа на множество агенти, Wasm и Web API само за браузъри.
Как се измерва
- test262 —
bin/test262изпълнява пакета локално. Пълната матрица се изпълнява в работния потокcompat-matrix.yml, който се стартира ръчно, а не при всяко изпращане; успешното изпълнение записва снимката вCOMPAT.md, където са посочени датата на създаването ѝ и съответният комит. Използва се версията на пакета, фиксирана от Git подмодулаtest262. - Web Platform Tests —
bin/wptизпълнява внесените фикстури. Работният потокwpt.ymlги изпълнява при изпращане къмmainи при заявки за изтегляне, които променятsrc/, фикстурите или файловете Composer. - Популярни библиотеки —
composer testизпълнява PHPUnit, включително набора за побайтово равенство на популярни библиотеки, подtests/Popular/. Работният потокpopular.ymlго изпълнява със същия филтър на пътищата и генерира отново всички еталонни резултати с реален Node, за да открива остарели резултати при обновяване на включена библиотека.
Регресия в WPT или популярен пакет проваля заявката за изтегляне, която я е причинила. Регресия в test262 се открива при следващото изпълнение на матрицата.