Spezifikationsumfang
Phasis richtet sich nach der aktuellen ECMAScript-Spezifikation (ES2024+) und berücksichtigt TC39-Vorschläge ab Stage 3. Diese Seite ist das verständliche Verzeichnis der tatsächlich enthaltenen Funktionen.
Sprache
Funktion
Status
Lexikalische Deklarationen (let, const) mit TDZ
✅
Block-, Funktions- und Modul-Scope
✅
Arrow-Funktionen (mit lexikalischem this)
✅
Standardparameter, Rest-Parameter, Spread
✅
Destructuring (Array, Objekt, verschachtelt, Standardwerte, Rest)
✅
Template-Literale, getaggte Templates
✅
Berechnete Eigenschaftsnamen
✅
Kurzschreibweise für Eigenschaften und Methoden
✅
Klassen — Konstruktoren, Methoden, Getter/Setter, statische Elemente
✅
Klassenfelder (öffentlich, privat, statisch)
✅
Private Methoden und Zugriffsfunktionen
✅
super in Methoden und Konstruktoren
✅
Decorators (Stage 3)
✅
Statische Initialisierungsblöcke
✅
Optionale Verkettung (?.), Nullish Coalescing (??)
✅
Logische Zuweisungsoperatoren (&&=, ||=, ??=)
✅
Zahlentrennzeichen (1_000_000)
✅
BigInt-Literale (123n) und Operatoren
✅
Async-Funktionen, Async-Generatoren, Top-Level-Await
✅
Generatoren (synchron und asynchron)
✅
for…of, for…in, for await…of
✅
Iteratoren und Iterables (Symbol.iterator)
✅
Symbol-Primitive und bekannte Symbole
✅
ES-Module (import / export, dynamisches import())
✅
import.meta
✅
import attributes (Stage 3)
✅
Strict Mode und Legacy-Verhalten aus Annex B
✅
Reguläre Ausdrücke (/u, /v, /d, benannte Gruppen, Lookbehind)
✅
Automatisches Einfügen von Semikolons (ASI)
✅
Hashbang-Grammatik (#!/usr/bin/env phasis)
✅
Korrekte Tail Calls im Strict Mode (ES2015, von der Spezifikation vorgeschrieben)
✅
Standardbibliothek
Grundlagen
Objekt
Abdeckung
Object
vollständig — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries usw.
Array
vollständig — jede Prototypmethode einschließlich at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
vollständig — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
vollständig — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER usw.
BigInt
vollständig — beliebige Genauigkeit über bcmath
Boolean
vollständig
Math
vollständig — jede Methode und jeder Sonderfall für NaN / Infinity / -0
JSON
vollständig — parse, stringify, eigene Replacer, Reviver, Einrückung
Symbol
vollständig — for, keyFor, alle bekannten Symbole, Symbol.toPrimitive
Function
vollständig — Semantik von call, apply, bind, length, name und prototype
Collections
Objekt
Abdeckung
Map
vollständig — einschließlich groupBy und Live-Iteration
Set
vollständig — einschließlich intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
vollständig
Asynchron
Objekt
Abdeckung
Promise
vollständig — all, race, any, allSettled, withResolvers, asynchrone Iteration
AsyncIterator, AsyncGenerator
vollständig
Microtask-Planung
✅
Binärdaten
Objekt
Abdeckung
ArrayBuffer, SharedArrayBuffer
vollständig
DataView
vollständig — getBigInt64, setBigInt64 usw.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
vollständig
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
vollständig (nur einzelner Agent)
Reflection und Proxys
Objekt
Abdeckung
Proxy
alle 13 Traps, widerrufbar
Reflect
alle 14 statischen Methoden
Fehler
Objekt
Abdeckung
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
vollständig
AggregateError
vollständig
SuppressedError (explizite Ressourcenverwaltung, Stage 3)
vollständig
Termine und Uhrzeit
Objekt
Abdeckung
Date
vollständig
Temporal (Stage 3)
vollständig — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (einschließlich Hebräisch, Chinesisch, Dangi, Äthiopisch usw.)
Internationalisierung
Objekt
Abdeckung
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
vollständig (nutzt bei Verfügbarkeit die intl-Erweiterung von PHP)
Ressourcenverwaltung
Objekt
Abdeckung
DisposableStack, AsyncDisposableStack (Stage 3)
vollständig
Symbol.dispose, Symbol.asyncDispose
vollständig
Deklarationen von using / await using
vollständig
Sonstiges
Objekt
Abdeckung
RegExp (einschließlich /v-Mengennotation, benannter Captures, Lookaround, Sticky-/Global-Flags)
vollständig
Iterator-Helfer (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
vollständig
ShadowRealm (Stage 3)
vollständig
globalThis
✅
Über das reine ECMAScript hinaus stellt Phasis mehrere abgestufte Pakete mit Web-APIs bereit, auf die echte JS-Bibliotheken vorab prüfen. Siehe Web-APIs für den vollständigen Umfang und die Konformität nach Bereich.
Paket
Globale Objekte
WPT
Webplattform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (Alias von globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Mixin Body, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, vollständige WHATWG Streams (ReadableStream, WritableStream, TransformStream, Warteschlangenstrategien, BYOB), CompressionStream / DecompressionStream (zlib + optional Brotli über ext-brotli), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, vollständiges 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-Frame-Codec, austauschbarer Transport über setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (auf dem Fetch-Transport aufbauend, daher gelten Policy-Hooks)
100 %
Ereignisschleife
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
n/a (mit Oracle getestet)
¹ Ausgenommen sind freigegebene Untertests in den Kompressions-Fixtures: die Brotli-Fälle, die ext-brotli benötigen, und die Fälle mit SharedArrayBuffer-gestützter Eingabe (EXPECTED_FAILURES in tests/Wpt/WptTest.php).
Alle anderen importierten Web Platform Tests bestehen — die Aufschlüsselung der Konformität findest du unter Web-APIs .
Noch nicht implementiert
SharedArrayBuffer-Worker-Semantik über einen einzelnen Agenten hinaus — atomare Benachrichtigungen über mehrere echte OS-Threads hinweg erfordern pcntl und stehen nicht auf der Roadmap. Atomics innerhalb eines einzelnen Agenten funktionieren.Intl.Segmenter mit Graphemclustern, die ICU 76+ benötigen — hängt von der Version der intl-Erweiterung in der Host-PHP ab. Versionierung
Phasis verwendet Semver. Die Versionsreihe richtet sich nach den Entwürfen der ECMAScript-Spezifikation:
Version von Phasis
Spezifikationsziel
Stage-3-Vorschläge
0.x
ES2024
Decorators, Temporal, explizite Ressourcenverwaltung, Iterator-Helfer, Set-Methoden
Der Sprung auf 1.0 setzt voraus, dass alle Stage-4-Vorschläge im ES2025-Entwurf implementiert sind und die Semantik zum Leeren von Promise-Warteschlangen stabil ist.