Specifikáció lefedettsége
A(z) Phasis az aktuális ECMAScript-specifikációt (ES2024+) célozza, és nyomon követi a TC39 Stage 3-as és annál előrehaladottabb javaslatait. Ez az oldal az élesben elérhető funkciók közérthető jegyzéke.
Nyelv
Funkció
Állapot
Lexikai deklarációk (let, const) TDZ-vel
✅
Blokk-, függvény- és modulszintű hatókör
✅
Nyílfüggvények (lexikai this-szel)
✅
Alapértelmezett paraméterek, rest paraméterek, spread
✅
Destrukturálás (tömb, objektum, beágyazott elemek, alapértékek, rest)
✅
Sablonliterálok, címkézett sablonok
✅
Számított tulajdonságnevek
✅
Rövidített tulajdonságok és metódusok
✅
Osztályok — konstruktorok, metódusok, getterek/setterek, statikus elemek
✅
Osztálymezők (publikus, privát, statikus)
✅
Privát metódusok és hozzáférők
✅
super metódusokban és konstruktorokban
✅
Dekorátorok (Stage 3)
✅
Statikus inicializáló blokkok
✅
Opcionális láncolás (?.), nullish coalescing (??)
✅
Logikai értékadás-operátorok (&&=, ||=, ??=)
✅
Számelválasztók (1_000_000)
✅
BigInt-literálok (123n) és operátorok
✅
Aszinkron függvények, aszinkron generátorok, legfelső szintű await
✅
Generátorok (szinkron és aszinkron)
✅
for…of, for…in, for await…of
✅
Iterátorok és iterálható elemek (Symbol.iterator)
✅
Symbol primitívek és jól ismert szimbólumok
✅
ES-modulok (import / export, dinamikus import())
✅
import.meta
✅
import attributes (Stage 3)
✅
Szigorú mód + Annex B örökölt viselkedések
✅
Reguláris kifejezések (/u, /v, /d, névvel ellátott csoportok, előrenézés és hátranézés)
✅
Automatikus pontosvessző-beszúrás (ASI)
✅
Hashbang nyelvtan (#!/usr/bin/env phasis)
✅
Valódi tail callok szigorú módban (ES2015, a specifikáció előírása)
✅
Szabványos könyvtár
Alapvető objektumok
Objektum
Lefedettség
Object
teljes — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries stb.
Array
teljes — minden prototípus-metódus, köztük at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
teljes — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
teljes — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER stb.
BigInt
teljes — tetszőleges pontosságú számítás a bcmath segítségével
Boolean
teljes
Math
teljes — minden metódus, a NaN / Infinity / -0 minden különleges esete
JSON
teljes — parse, stringify, egyedi replacerek, reviver, behúzás
Symbol
teljes — for, keyFor, minden jól ismert szimbólum, Symbol.toPrimitive
Function
teljes — call, apply, bind, length, name, prototype szemantikája
Kollekciók
Objektum
Lefedettség
Map
teljes — többek között groupBy és élő iteráció
Set
teljes — többek között intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
teljes
Aszinkron elemek
Objektum
Lefedettség
Promise
teljes — all, race, any, allSettled, withResolvers, aszinkron iteráció
AsyncIterator, AsyncGenerator
teljes
Mikrofeladatok ütemezése
✅
Bináris adatok
Objektum
Lefedettség
ArrayBuffer, SharedArrayBuffer
teljes
DataView
teljes — getBigInt64, setBigInt64 stb.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
teljes
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
teljes (csak egyetlen ügynök esetén)
Reflexió és proxyk
Objektum
Lefedettség
Proxy
mind a 13 csapda, visszavonható
Reflect
mind a 14 statikus metódus
Hibák
Objektum
Lefedettség
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
teljes
AggregateError
teljes
SuppressedError (Stage 3 explicit erőforrás-kezelés)
teljes
Dátum és idő
Objektum
Lefedettség
Date
teljes
Temporal (Stage 3)
teljes — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (többek között héber, kínai, dangi, etióp stb.)
Nemzetköziesítés
Objektum
Lefedettség
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
teljes (elérhetőség esetén a(z) PHP intl-kiterjesztésére támaszkodik)
Erőforrás-kezelés
Objektum
Lefedettség
DisposableStack, AsyncDisposableStack (Stage 3)
teljes
Symbol.dispose, Symbol.asyncDispose
teljes
using / await using deklarációk
teljes
Egyéb
Objektum
Lefedettség
RegExp (többek között /v halmazjelölés, névvel ellátott capture-ek, előrenézés és hátranézés, sticky/global flag-ek)
teljes
Iterator segédfüggvények (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
teljes
ShadowRealm (Stage 3)
teljes
globalThis
✅
A tiszta ECMAScripten túl a(z) Phasis több, rétegekbe rendezett Web API-csomagot is tartalmaz, amelyeket a valós JS könyvtárak előzetesen ellenőriznek. A teljes felület és az egyes területek megfelelősége a Web API-k oldalon látható.
Csomag
Globális objektumok
WPT
Web Platform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (a(z) globalThis aliasa), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, teljes WHATWG Streams (ReadableStream, WritableStream, TransformStream, sorba állítási stratégiák, BYOB), CompressionStream / DecompressionStream (zlib + opcionális brotli a(z) ext-brotli használatával), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, teljes SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktor + RFC 6455 keretkodek, cserélhető átviteli réteg a(z) setWebSocketTransport segítségével)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (a fetch átviteli rétegre épül, ezért a házirend-hookok érvényesülnek)
100 %
Eseményhurok
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
n/a (orákulumtesztekkel ellenőrizve)
¹ A tömörítési tesztadatok engedélyezőlistáján szereplő alesetek kivételével: a brotli-esetek, amelyekhez ext-brotli szükséges, valamint azok az esetek, amelyek SharedArrayBuffer-alapú bemenetet adnak át (EXPECTED_FAILURES a(z) tests/Wpt/WptTest.php-ban).
Az összes többi importált Web Platform Test sikeres — a megfelelőségi bontást a Web API-k oldalon találja.
Ami még nincs megvalósítva
SharedArrayBuffer-munkerszemantika egyetlen ügynökön túl — a valódi operációsrendszer-szálak közötti, többszálú atomikus értesítéshez pcntl szükséges, és nem szerepel az ütemtervben. Az egyetlen ügynökön belüli atomikus műveletek működnek.Intl.Segmenter ICU 76+-t igénylő grafémaklaszterekkel — a gazdagép PHP-jának intl-kiterjesztésverziójától függ. Verziózás
A(z) Phasis a semvert követi. A verzióág az ECMAScript specifikációtervezeteihez igazodik:
Phasis verzió
Specifikációs cél
Stage 3 javaslatok
0.x
ES2024
dekorátorok, Temporal, explicit erőforrás-kezelés, iterátor-segédek, halmazmetódusok
Az 1.0-s verzió kiadásának feltétele, hogy az ES2025-tervezet minden Stage 4-es javaslata megvalósuljon, és stabil legyen a Promise-ok ürítésének szemantikája.