Preskočiť na obsah

Kompatibilita

Phasis sa overuje pomocou troch nezávislých referenčných zdrojov:

  1. test262 — oficiálna testovacia sada zhody s ECMAScriptom od TC39. 100 % revízie pripnutej v repozitári.
  2. Web Platform Tests — oficiálna sada WHATWG / W3C pre webové API mimo ECMAScriptu (fetch, XHR, WebSocket, Streams, Headers, Blob, kódovanie, URL, structured-clone, abort, hr-time, atob, crypto). 100 % importovaného korpusu.
  3. Populárne knižnice — 204 široko používaných balíkov npm (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) sa vykonáva s bajtovo zhodným výsledkom ako Node.js.

V porovnaní s inými enginmi

Engine test262 Poznámky
Phasis 100 % Čistý PHP. Cieľom je ES2024+.
V8 (Node, Chrome) 99.8 % Referenčný engine v C++.
SpiderMonkey (Firefox) 99.6 % Referenčný engine v C++.
JavaScriptCore (Safari) 99.4 % Referenčný engine v C++.
QuickJS ~97 % Ľahký engine v jazyku C na vloženie do aplikácií.
Hermes (React Native) ~95 % Engine na vloženie do aplikácií, optimalizovaný pre mobilné zariadenia.

Čísla pochádzajú z test262.fyi. Phasis patrí medzi najlepšie, po boku produkčných prehliadačových enginov.

Stránky

  • test262 pokrytie — čo sa testuje, ako sada funguje a prečo záleží na 100 %.
  • Webové API (WPT) — Web Platform Pack a Fetch Pack: URL, kódovanie, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, plus crypto, WebSocket a XMLHttpRequest.
  • Streamy — úplný štandard WHATWG Streams: ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, stratégie front, asynchrónna iterácia.
  • Populárne balíky — bajtová zhoda kontrolovaná v CI s Node.js pre 204 balíkov npm používaných na analýzu, tvorbu šablón, validáciu, dátum a čas, matematiku, hašovanie, vyhľadávanie/porovnávanie, farby, spracovanie URL a ďalšie.
  • Rozsah špecifikácie — všetky vstavané prvky ECMAScriptu, syntaktické funkcie a objekty štandardnej knižnice dodávané s Phasis.
  • Známe obmedzenia — oblasti, v ktorých sa Phasis zámerne odlišuje od V8: výkonnostný strop, súbežnosť viacerých agentov, Wasm, webové API dostupné iba v prehliadači.

Ako sa meria

  • test262 — bin/test262 spúšťa sadu lokálne. Celá matica sa spúšťa v rámci workflow compat-matrix.yml, ktorý sa spúšťa ručne, nie pri každom pushnutí; úspešné spustenie uloží snímku do COMPAT.md, kde sa zaznamenáva dátum vytvorenia a príslušný commit. Použitá revízia sady je tá, ktorú určuje podmodul test262 git.
  • Web Platform Tests — bin/wpt spúšťa importované testy. Workflow wpt.yml ich spúšťa pri pushnutí do main a pri pull requestoch, ktoré menia src/, testy alebo súbory Composer.
  • Populárne knižnice — composer test spúšťa PHPUnit vrátane sady na kontrolu bajtovej zhody populárnych knižníc v rámci tests/Popular/. Workflow popular.yml ju spúšťa pri rovnakom filtri ciest a zároveň znovu generuje všetky referenčné výsledky pomocou reálneho Node, takže pri aktualizácii vendorizovanej knižnice odhalí zastaraný referenčný výsledok.

Regresia v WPT alebo populárnom balíku zlyhá v pull requeste, ktorý ju spôsobil. Regresia test262 sa prejaví pri ďalšom spustení matice.