Specificatieoverzicht
Phasis richt zich op de huidige ECMAScript-specificatie (ES2024+) en volgt TC39-voorstellen vanaf Stage 3. Deze pagina is het leesbare overzicht van wat daadwerkelijk is geïmplementeerd.
Taal
Functie
Status
Lexicale declaraties (let, const) met TDZ
✅
Blokbereik, functiebereik, modulebereik
✅
Pijlfuncties (met lexicale this)
✅
Standaardparameters, restparameters, spread
✅
Destructurering (array, object, genest, standaardwaarden, rest)
✅
Templatestrings, getagde templates
✅
Berekende eigenschapsnamen
✅
Verkorte eigenschappen en methoden
✅
Klassen — constructors, methoden, getters/setters, static
✅
Klassevelden (publiek, privé, static)
✅
Privémethoden en accessors
✅
super in methoden en constructors
✅
Decorators (Stage 3)
✅
Statische initialisatieblokken
✅
Optioneel koppelen (?.), nullish coalescing (??)
✅
Logische toewijzingsoperatoren (&&=, ||=, ??=)
✅
Numerieke scheidingstekens (1_000_000)
✅
BigInt-literals (123n) en operatoren
✅
Asynchrone functies, asynchrone generators, top-level await
✅
Generators (synchroon en asynchroon)
✅
for…of, for…in, for await…of
✅
Iterators en iterables (Symbol.iterator)
✅
Symbol-primitieven en bekende symbols
✅
ES-modules (import / export, dynamische import())
✅
import.meta
✅
import attributes (Stage 3)
✅
Strikte modus + verouderd gedrag van Annex B
✅
Reguliere expressies (/u, /v, /d, benoemde groepen, lookbehind)
✅
Automatische puntkommainvoeging (ASI)
✅
Hashbang-grammatica (#!/usr/bin/env phasis)
✅
Juiste tail calls in strikte modus (ES2015, vereist door de specificatie)
✅
Standaardbibliotheek
Fundamenteel
Object
Dekking
Object
volledig — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries, enz.
Array
volledig — elke prototypemethode, waaronder at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
volledig — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
volledig — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER, enz.
BigInt
volledig — willekeurige precisie via bcmath
Boolean
volledig
Math
volledig — elke methode en elk speciaal geval voor NaN / Infinity / -0
JSON
volledig — parse, stringify, aangepaste replacers, reviver, inspringing
Symbol
volledig — for, keyFor, alle bekende symbols, Symbol.toPrimitive
Function
volledig — call, apply, bind, length, name, prototype-semantiek
Collecties
Object
Dekking
Map
volledig — inclusief groupBy en live iteratie
Set
volledig — inclusief intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
volledig
Asynchroon
Object
Dekking
Promise
volledig — all, race, any, allSettled, withResolvers, asynchrone iteratie
AsyncIterator, AsyncGenerator
volledig
Microtaakplanning
✅
Binaire gegevens
Object
Dekking
ArrayBuffer, SharedArrayBuffer
volledig
DataView
volledig — getBigInt64, setBigInt64, enz.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
volledig
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
volledig (alleen single-agent)
Reflectie en proxies
Object
Dekking
Proxy
alle 13 traps, intrekbaar
Reflect
alle 14 statische methoden
Fouten
Object
Dekking
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
volledig
AggregateError
volledig
SuppressedError (Stage 3 expliciet resourcebeheer)
volledig
Datums en tijd
Object
Dekking
Date
volledig
Temporal (Stage 3)
volledig — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (o.a. Hebreeuws, Chinees, Dangi, Ethiopisch, enz.)
Internationalisering
Object
Dekking
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
volledig (gebruikt PHP's intl-uitbreiding wanneer beschikbaar)
Resourcebeheer
Object
Dekking
DisposableStack, AsyncDisposableStack (Stage 3)
volledig
Symbol.dispose, Symbol.asyncDispose
volledig
using / await using-declaraties
volledig
Overig
Object
Dekking
RegExp (incl. /v-setnotatie, benoemde captures, lookaround, sticky/global-flags)
volledig
Iterator-helpers (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
volledig
ShadowRealm (Stage 3)
volledig
globalThis
✅
Naast pure ECMAScript levert Phasis verschillende gelaagde pakketten met Web API's die praktijkbibliotheken van JS vooraf controleren. Bekijk Web-API's voor het volledige overzicht en conformiteit per gebied.
Pakket
Globals
WPT
Web Platform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias van globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body-mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, volledige WHATWG Streams (ReadableStream, WritableStream, TransformStream, wachtrijstrategieën, BYOB), CompressionStream / DecompressionStream (zlib + optionele brotli via ext-brotli), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, volledige SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (constructor + RFC 6455-framecodec, vervangbaar transport via setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (gelaagd over het fetchtransport, waardoor beleids-hooks van toepassing zijn)
100 %
Eventloop
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
n.v.t. (getest met oracle)
¹ Exclusief toegestane subtests in de compressietestbestanden: de brotli-cases die ext-brotli nodig hebben, en de cases met invoer op basis van SharedArrayBuffer (EXPECTED_FAILURES in tests/Wpt/WptTest.php).
Alle andere geïmporteerde Web Platform Tests slagen — zie Web-API's voor het conformiteitsoverzicht.
Wat nog niet is geïmplementeerd
SharedArrayBuffer-workersemantiek buiten één agent — atomaire notificatie tussen meerdere threads van het echte besturingssysteem vereist pcntl en staat niet op de roadmap. Atomaire bewerkingen binnen één agent werken.Intl.Segmenter met graphemeclusters waarvoor ICU 76+ nodig is — afhankelijk van de versie van de intl-extensie van de host-PHP. Versiebeheer
Phasis volgt semver. De versiereeks volgt de concepten van de ECMAScript-specificatie:
Phasis-versie
Specificatiedoel
Stage 3-voorstellen
0.x
ES2024
decorators, Temporal, expliciet resourcebeheer, iteratorhelpers, setmethoden
Een verhoging naar 1.0 is afhankelijk van de implementatie van elk Stage 4-voorstel in het ES2025-concept en stabiele semantiek voor het leegmaken van Promise's.