Rozsah špecifikácie
Phasis cieli na aktuálnu špecifikáciu ECMAScriptu (ES2024+) a sleduje návrhy TC39 vo fáze 3 a vyššej. Táto stránka je prehľadným indexom toho, čo je skutočne dostupné.
Jazyk
Vlastnosť
Stav
Lexikálne deklarácie (let, const) s TDZ
✅
Blokový, funkčný a modulový rozsah platnosti
✅
Funkcie so šípkovou syntaxou (s lexikálnym this)
✅
Predvolené parametre, zvyškové parametre, spread
✅
Destrukturalizácia (polia, objekty, vnorené štruktúry, predvolené hodnoty, zvyškové prvky)
✅
Šablónové literály, označené šablóny
✅
Vypočítané názvy vlastností
✅
Skrátený zápis vlastností a metód
✅
Triedy — konštruktory, metódy, gettery/settery, statické členy
✅
Polia tried (verejné, súkromné, statické)
✅
Súkromné metódy a prístupové metódy
✅
super v metódach a konštruktoroch
✅
Dekorátory (fáza 3)
✅
Bloky statických inicializátorov
✅
Voliteľné reťazenie (?.), spájanie s hodnotou null (??)
✅
Operátory logického priradenia (&&=, ||=, ??=)
✅
Oddeľovače v číselných literáloch (1_000_000)
✅
Literály BigInt (123n) a operátory
✅
Asynchrónne funkcie, asynchrónne generátory, await na najvyššej úrovni
✅
Generátory (synchrónne a asynchrónne)
✅
for…of, for…in, for await…of
✅
Iterátory a iterovateľné objekty (Symbol.iterator)
✅
Primitívne symboly a známe symboly
✅
Moduly ES (import / export, dynamický import())
✅
import.meta
✅
import attributes (fáza 3)
✅
Prísny režim + staršie správanie Annex B
✅
Regulárne výrazy (/u, /v, /d, pomenované skupiny, spätné pohľady)
✅
Automatické vkladanie bodkočiarok (ASI)
✅
Gramatika Hashbang (#!/usr/bin/env phasis)
✅
Správne koncové volania v prísnom režime (ES2015, vyžaduje ich špecifikácia)
✅
Štandardná knižnica
Základné
Objekt
Pokrytie
Object
úplné — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries atď.
Array
úplné — každá metóda prototypu vrátane 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 atď.
BigInt
úplné — ľubovoľná presnosť cez bcmath
Boolean
úplné
Math
úplné — každá metóda a každá špeciálna situácia pre NaN / Infinity / -0
JSON
úplné — parse, stringify, vlastné nahradzujúce funkcie, reviver, odsadenie
Symbol
úplné — for, keyFor, všetky známe symboly, Symbol.toPrimitive
Function
úplné — call, apply, bind, length, name, prototype sémantika
Kolekcie
Objekt
Pokrytie
Map
úplné — vrátane groupBy a živej iterácie
Set
úplné — vrátane intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
úplné
Asynchrónnosť
Objekt
Pokrytie
Promise
úplné — all, race, any, allSettled, withResolvers, asynchrónna iterácia
AsyncIterator, AsyncGenerator
úplné
Plánovanie mikrotaskov
✅
Binárne údaje
Objekt
Pokrytie
ArrayBuffer, SharedArrayBuffer
úplné
DataView
úplné — getBigInt64, setBigInt64 atď.
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é (len jeden agent)
Reflexia a proxy
Objekt
Pokrytie
Proxy
všetkých 13 pascí, možnosť zrušenia
Reflect
všetkých 14 statických metód
Chyby
Objekt
Pokrytie
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
úplné
AggregateError
úplné
SuppressedError (explicitná správa zdrojov, Stage 3)
úplné
Dátumy a čas
Objekt
Pokrytie
Date
úplné
Temporal (Stage 3)
úplné — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (vrátane hebrejského, čínskeho, Dangi, etiópskeho atď.)
Internacionalizácia
Objekt
Pokrytie
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
úplné (ak je dostupné, deleguje na rozšírenie intl v PHP)
Správa zdrojov
Objekt
Pokrytie
DisposableStack, AsyncDisposableStack (Stage 3)
úplné
Symbol.dispose, Symbol.asyncDispose
úplné
deklarácie using / await using
úplné
Ostatné
Objekt
Pokrytie
RegExp (vrátane notácie množín /v, pomenovaných zachytení, lookaround, príznakov sticky/global)
úplné
Pomocné funkcie Iterator (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
úplné
ShadowRealm (Stage 3)
úplné
globalThis
✅
Okrem čistého ECMAScriptu Phasis obsahuje niekoľko vrstvených balíkov Web API, ktoré knižnice JS v reálnych podmienkach predbežne kontrolujú. Kompletný prehľad API a zhodu v jednotlivých oblastiach nájdete v časti Web API .
Balík
Globálne objekty
WPT
Web Platform
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á podpora WHATWG Streams (ReadableStream, WritableStream, TransformStream, stratégie zaraďovania do frontu, BYOB), CompressionStream / DecompressionStream (zlib + voliteľné brotli cez ext-brotli), navigator
100 %¹
Crypto
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 (konštruktor + kodek rámcov RFC 6455, vymeniteľný prenos cez setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (postavené na prenose Fetch, takže platia aj pravidlá politiky)
100 %
Slučka udalostí
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
n/a (overené pomocou oracle)
¹ Nezahŕňa podtesty uvedené na zozname povolených výnimiek v testovacích prípadoch kompresie: prípady brotli, ktoré vyžadujú ext-brotli, a prípady používajúce vstup podporovaný SharedArrayBuffer (EXPECTED_FAILURES v tests/Wpt/WptTest.php).
Všetky ostatné importované testy Web Platform Tests prechádzajú — prehľad zhody nájdete v časti Web API .
Čo ešte nie je implementované
Sémantika workerov SharedArrayBuffer mimo jedného agenta — atómové oznamovanie medzi vláknami skutočného OS vyžaduje pcntl a nie je v pláne. Atómové operácie v rámci jedného agenta fungujú.Intl.Segmenter s grafémovými klastrami, ktoré vyžadujú ICU 76+ — závisí od verzie rozšírenia intl v hostiteľskom PHP. Verziovanie
Phasis sa riadi sémantickým verzovaním. Číselná verzia sleduje návrhy špecifikácie ECMAScript:
Verzia Phasis
Cieľová špecifikácia
Návrhy Stage 3
0.x
ES2024
dekorátory, Temporal, explicitná správa zdrojov, pomocné funkcie iterátora, metódy množín
Verzia 1.0 bude vydaná až po implementovaní každého návrhu Stage 4 v návrhu ES2025 a stabilizovaní sémantiky vyprázdňovania frontu Promise.