Specifikationsdækning
Phasis følger den aktuelle ECMAScript-specifikation (ES2024+) og holder øje med TC39-forslag på Stage 3 og derover. Denne side er et læsevenligt register over det, der faktisk er implementeret.
Sprog
Funktion
Status
Leksikale deklarationer (let, const) med TDZ
✅
Blok-, funktions- og modulomfang
✅
Pilefunktioner (med leksikalsk this)
✅
Standardparametre, restparametre, spread
✅
Destrukturering (array, objekt, indlejret, standardværdier, rest)
✅
Template literals, taggede templates
✅
Beregnede egenskabsnavne
✅
Kortforms-egenskaber og metoder
✅
Klasser — konstruktører, metoder, getters/setters, static
✅
Klassefelter (public, private, static)
✅
Private metoder og accessors
✅
super i metoder og konstruktører
✅
Decorators (Stage 3)
✅
Statiske initialiseringsblokke
✅
Valgfri chaining (?.), nullish coalescing (??)
✅
Logiske tildelingsoperatorer (&&=, ||=, ??=)
✅
Numeriske separatorer (1_000_000)
✅
BigInt-litteraler (123n) og operatorer
✅
Asynkrone funktioner, asynkrone generatorer, await på øverste niveau
✅
Generatorer (synkrone og asynkrone)
✅
for…of, for…in, for await…of
✅
Iteratorer og iterables (Symbol.iterator)
✅
Symbolprimitiver og velkendte symboler
✅
ES-moduler (import / export, dynamisk import())
✅
import.meta
✅
import attributes (Stage 3)
✅
Strict mode + ældre Annex B-adfærd
✅
Regulære udtryk (/u, /v, /d, navngivne grupper, lookbehind)
✅
Automatisk indsættelse af semikolon (ASI)
✅
Hashbang-grammatik (#!/usr/bin/env phasis)
✅
Korrekte tail calls i strict mode (ES2015, krævet af specifikationen)
✅
Standardbibliotek
Grundlæggende
Objekt
Dækning
Object
fuld — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries osv.
Array
fuld — alle prototypemetoder, inklusive at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
fuld — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
fuld — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER osv.
BigInt
fuld — vilkårlig præcision via bcmath
Boolean
fuld
Math
fuld — alle metoder og særtilfælde for NaN / Infinity / -0
JSON
fuld — parse, stringify, brugerdefinerede replacers, reviver, indrykning
Symbol
fuld — for, keyFor, alle velkendte symboler, Symbol.toPrimitive
Function
fuld — semantik for call, apply, bind, length, name, prototype
Samlinger
Objekt
Dækning
Map
fuld — inklusive groupBy og live-iteration
Set
fuld — inklusive intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
fuld
Asynkron
Objekt
Dækning
Promise
fuld — all, race, any, allSettled, withResolvers, asynkron iteration
AsyncIterator, AsyncGenerator
fuld
Planlægning af mikrotasks
✅
Binære data
Objekt
Dækning
ArrayBuffer, SharedArrayBuffer
fuld
DataView
fuld — getBigInt64, setBigInt64 osv.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
fuld
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
fuld (kun én agent)
Refleksion og proxies
Objekt
Dækning
Proxy
alle 13 fælder, kan gøres ugyldige
Reflect
alle 14 statiske metoder
Fejl
Objekt
Dækning
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
fuld
AggregateError
fuld
SuppressedError (Stage 3, eksplicit håndtering af ressourcer)
fuld
Datoer og tid
Objekt
Dækning
Date
fuld
Temporal (Stage 3)
fuld — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (inkl. hebraisk, kinesisk, Dangi, etiopisk osv.)
Internationalisering
Objekt
Dækning
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
fuld (bruger PHP's intl-udvidelse, når den er tilgængelig)
Ressourcehåndtering
Objekt
Dækning
DisposableStack, AsyncDisposableStack (Stage 3)
fuld
Symbol.dispose, Symbol.asyncDispose
fuld
using / await using-deklarationer
fuld
Andet
Objekt
Dækning
RegExp (inkl. /v-mængdenotation, navngivne captures, lookaround, sticky/global-flag)
fuld
Iterator-hjælpere (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
fuld
ShadowRealm (Stage 3)
fuld
globalThis
✅
Ud over ren ECMAScript leveres flere lagdelte pakker med Web-API'er fra Phasis, som virkelige JS-biblioteker forhåndstjekker for. Se Web-API'er for den fulde dækning og overensstemmelse for hvert område.
Pakke
Globale objekter
WPT
Webplatform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias for globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body-mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, fuld WHATWG Streams (ReadableStream, WritableStream, TransformStream, køstrategier, BYOB), CompressionStream / DecompressionStream (zlib + valgfri brotli via ext-brotli), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, fuld SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktør + RFC 6455-frame-codec, udskiftelig transport via setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (lagdelt oven på fetch-transporten, så politik-hooks gælder)
100 %
Hændelsesløkke
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
ikke relevant (oracle-testet)
¹ Brotlitilfældene i komprimerings-fixtures, som kræver ext-brotli, samt tilfældene, der sender SharedArrayBuffer-baseret input (EXPECTED_FAILURES i tests/Wpt/WptTest.php), er undtaget fra de tilladte undertests.
Alle andre importerede Web Platform Tests består — se Web-API'er for oversigten over overensstemmelse.
Det, der endnu ikke er implementeret
SharedArrayBuffer-arbejdersemantik ud over én agent — atomisk notifikation på tværs af flere rigtige OS-tråde kræver pcntl og er ikke på planen. Atomare operationer med én agent fungerer.Intl.Segmenter med grafemklynger, der kræver ICU 76+ — afhænger af versionen af intl-udvidelsen i værtsmiljøets PHP. Versionering
Phasis følger semver. Versionslinjen følger udkast til ECMAScript-specifikationen:
Phasis-version
Specifikationsmål
Stage 3-forslag
0.x
ES2024
decorators, Temporal, eksplicit ressourcehåndtering, iterator-hjælpere, mængdemetoder
En opgradering til 1.0 afhænger af, at alle Stage 4-forslag i ES2025-udkastet er implementeret, og at semantikken for tømning af Promise-køen er stabil.