Към съдържанието

Съвместимост

Phasis е проверен спрямо три независими източника:

  1. test262 — официалният тестов пакет за съответствие с ECMAScript на TC39. 100 % от версията, фиксирана в хранилището.
  2. Web Platform Tests — официалният пакет на WHATWG / W3C за Web API извън ECMAScript (Fetch, XHR, WebSocket, Streams, Headers, Blob, кодиране, URL, структурирано клониране, прекъсване, hr-time, atob, crypto). 100 % от внесения корпус.
  3. Популярни библиотеки — 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 се открива при следващото изпълнение на матрицата.