Pokrytí specifikace
Phasis cílí na aktuální specifikaci ECMAScriptu (ES2024+) a sleduje návrhy TC39 ve fázi 3 a vyšší. Tato stránka je přehledný index toho, co je skutečně součástí vydání.
Jazyk
Funkce
Stav
Lexikální deklarace (let, const) s TDZ
✅
Blokový, funkční a modulový rozsah platnosti
✅
Šipkové funkce (s lexikálním this)
✅
Výchozí parametry, zbytkové parametry, rozbalení
✅
Destrukturalizace (pole, objekt, vnoření, výchozí hodnoty, zbytek)
✅
Řetězcové literály šablon a označené šablony
✅
Vypočítané názvy vlastností
✅
Zkrácené zápisy vlastností a metod
✅
Třídy — konstruktory, metody, gettery/settery, statické členy
✅
Pole tříd (veřejná, soukromá, statická)
✅
Soukromé metody a přístupové metody
✅
super v metodách a konstruktorech
✅
Dekorátory (fáze 3)
✅
Bloky statické inicializace
✅
Volitelné řetězení (?.), koalescence nullish (??)
✅
Operátory logického přiřazení (&&=, ||=, ??=)
✅
Číselné oddělovače (1_000_000)
✅
Literály BigInt (123n) a operátory
✅
Asynchronní funkce, asynchronní generátory, await na nejvyšší úrovni
✅
Generátory (synchronní a asynchronní)
✅
for…of, for…in, for await…of
✅
Iterátory a iterovatelné objekty (Symbol.iterator)
✅
Primitivní hodnoty Symbol a známé symboly
✅
Moduly ES (import / export, dynamický import())
✅
import.meta
✅
import attributes (fáze 3)
✅
Přísný režim + zastaralé chování Annex B
✅
Regulární výrazy (/u, /v, /d, pojmenované skupiny, zpětný pohled)
✅
Automatické vkládání středníků (ASI)
✅
Gramatika hashbang (#!/usr/bin/env phasis)
✅
Správná volání ocasu v přísném režimu (ES2015, vyžadováno specifikací)
✅
Standardní knihovna
Základní
Objekt
Pokrytí
Object
úplné — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries atd.
Array
úplné — všechny prototypové metody včetně at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
úplné — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
úplné — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER atd.
BigInt
úplné — libovolná přesnost přes bcmath
Boolean
úplné
Math
úplné — všechny metody a všechny zvláštní případy pro NaN / Infinity / -0
JSON
úplné — parse, stringify, vlastní nahrazovací funkce, reviver, odsazení
Symbol
úplné — for, keyFor, všechny známé symboly, Symbol.toPrimitive
Function
úplné — call, apply, bind, length, name, sémantika prototype
Kolekce
Objekt
Pokrytí
Map
úplné — včetně groupBy a živé iterace
Set
úplné — včetně intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
úplné
Asynchronní
Objekt
Pokrytí
Promise
úplné — all, race, any, allSettled, withResolvers, asynchronní iterace
AsyncIterator, AsyncGenerator
úplné
Plánování mikrotasků
✅
Binární data
Objekt
Pokrytí
ArrayBuffer, SharedArrayBuffer
úplné
DataView
úplné — getBigInt64, setBigInt64 atd.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
úplné
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
úplné (pouze jeden agent)
Reflexe a proxy
Objekt
Pokrytí
Proxy
všech 13 pastí, lze odvolat
Reflect
všech 14 statických metod
Chyby
Objekt
Pokrytí
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
úplné
AggregateError
úplné
SuppressedError (explicitní správa zdrojů, fáze 3)
úplné
Data a čas
Objekt
Pokrytí
Date
úplné
Temporal (fáze 3)
úplné — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (včetně hebrejského, čínského, Dangi, etiopského kalendáře atd.)
Internacionalizace
Objekt
Pokrytí
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
úplné (pokud je k dispozici, deleguje na rozšíření intl od PHP)
Správa zdrojů
Objekt
Pokrytí
DisposableStack, AsyncDisposableStack (fáze 3)
úplné
Symbol.dispose, Symbol.asyncDispose
úplné
deklarace using / await using
úplné
Ostatní
Objekt
Pokrytí
RegExp (včetně zápisu množin /v, pojmenovaných zachycených skupin, lookaround, příznaků sticky/global)
úplné
pomocné funkce Iterator (fáze 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
úplné
ShadowRealm (fáze 3)
úplné
globalThis
✅
Kromě samotného ECMAScriptu obsahuje Phasis několik vrstev balíčků webových API, které skutečné knihovny JS předem kontrolují. Úplný přehled a shodu jednotlivých oblastí najdete v části Webová API .
Balíček
Globální objekty
WPT
Webová platforma
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, mixin Body, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, plné WHATWG Streams (ReadableStream, WritableStream, TransformStream, strategie fronty, BYOB), CompressionStream / DecompressionStream (zlib + volitelné brotli přes ext-brotli), navigator
100 %¹
Kryptografie
crypto.getRandomValues, crypto.randomUUID, plné SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktor + kodek rámců RFC 6455, vyměnitelný přenos přes setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (postavené nad přenosem fetch, takže se uplatní pravidla)
100 %
Smyčka událostí
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (fáze 3)
neuvedeno (ověřeno orákulem)
¹ Vynechány jsou povolené podtesty v testovacích datech komprese: případy brotli, které vyžadují ext-brotli, a případy se vstupem podporovaným SharedArrayBuffer (EXPECTED_FAILURES v tests/Wpt/WptTest.php).
Všechny ostatní importované testy Web Platform Tests procházejí — přehled shody najdete v části Webová API .
Co zatím není implementováno
Sémantika workerů SharedArrayBuffer nad rámec jediného agenta — atomické oznámení mezi více vlákny skutečného operačního systému vyžaduje pcntl a není na plánu. Atomické operace v rámci jednoho agenta fungují.Intl.Segmenter s klastry grafémů vyžadujícími ICU 76+ — závisí na verzi rozšíření intl v hostitelském PHP. Verzování
Phasis se řídí semver. Řada verzí sleduje návrhy specifikace ECMAScriptu:
Verze Phasis
Cíl specifikace
Návrhy ve fázi 3
0.x
ES2024
dekorátory, Temporal, explicitní správa zdrojů, pomocné funkce iterátorů, metody množin
Přechod na verzi 1.0 je podmíněn implementací všech návrhů ve fázi 4 obsažených v návrhu ES2025 a stabilním sémantickým chováním vyprazdňování fronty Promise.