Specifikationsstöd
Phasis följer den aktuella ECMAScript-specifikationen (ES2024+) och bevakar TC39-förslag från steg 3 och uppåt. Den här sidan är ett lättläst register över vad som faktiskt ingår.
Språk
Funktion
Status
Lexikala deklarationer (let, const) med TDZ
✅
Blockomfång, funktionsomfång, modulomfång
✅
Pilfunktioner (med lexikalt this)
✅
Standardparametrar, restparametrar, spread
✅
Destrukturering (arrayer, objekt, nästlade värden, standardvärden, rest)
✅
Malliteraler, taggade mallar
✅
Beräknade egenskapsnamn
✅
Förkortade egenskaper och metoder
✅
Klasser — konstruktorer, metoder, getters/setters, statiska medlemmar
✅
Klassfält (publika, privata, statiska)
✅
Privata metoder och accessorer
✅
super i metoder och konstruktorer
✅
Dekoratorer (steg 3)
✅
Statiska initieringsblock
✅
Valfri kedjning (?.), nullish-coalescing (??)
✅
Logiska tilldelningsoperatorer (&&=, ||=, ??=)
✅
Numeriska avgränsare (1_000_000)
✅
BigInt-literaler (123n) och operatorer
✅
Asynkrona funktioner, asynkrona generatorer, await på toppnivå
✅
Generatorer (synkrona och asynkrona)
✅
for…of, for…in, for await…of
✅
Iteratorer och itererbara objekt (Symbol.iterator)
✅
Symbolprimitiver och välkända symboler
✅
ES-moduler (import / export, dynamisk import())
✅
import.meta
✅
import attributes (steg 3)
✅
Strikt läge + äldre beteenden enligt Annex B
✅
Reguljära uttryck (/u, /v, /d, namngivna grupper, lookbehind)
✅
Automatisk insättning av semikolon (ASI)
✅
Hashbang-grammatik (#!/usr/bin/env phasis)
✅
Korrekta anrop i svansen i strikt läge (ES2015, krävs av specifikationen)
✅
Standardbibliotek
Grundläggande objekt
Objekt
Täckning
Object
fullständig — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries, osv.
Array
fullständig — alla prototypmetoder, inklusive at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
fullständig — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
fullständig — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER, osv.
BigInt
fullständig — godtycklig precision via bcmath
Boolean
fullständig
Math
fullständig — alla metoder och alla specialfall för NaN / Infinity / -0
JSON
fullständig — parse, stringify, anpassade ersättare, återställare, indrag
Symbol
fullständig — for, keyFor, alla välkända symboler, Symbol.toPrimitive
Function
fullständig — semantiken för call, apply, bind, length, name, prototype
Samlingar
Objekt
Täckning
Map
fullständig — inklusive groupBy och levande iteration
Set
fullständig — inklusive intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
fullständig
Asynkronitet
Objekt
Täckning
Promise
fullständig — all, race, any, allSettled, withResolvers, asynkron iteration
AsyncIterator, AsyncGenerator
fullständig
Schemaläggning av microtasks
✅
Binärdata
Objekt
Täckning
ArrayBuffer, SharedArrayBuffer
fullständig
DataView
fullständig — getBigInt64, setBigInt64, osv.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
fullständig
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
fullständig (endast en agent)
Reflektion och proxyer
Objekt
Täckning
Proxy
alla 13 fällor, kan återkallas
Reflect
alla 14 statiska metoder
Fel
Objekt
Täckning
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
fullständig
AggregateError
fullständig
SuppressedError (explicit resurshantering i Stage 3)
fullständig
Datum och tid
Objekt
Täckning
Date
fullständig
Temporal (Stage 3)
fullständig — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (inkl. hebreiska, kinesiska, Dangi, etiopiska osv.)
Internationalisering
Objekt
Täckning
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
fullständig (delegerar till tillägget intl för PHP när det är tillgängligt)
Resurshantering
Objekt
Täckning
DisposableStack, AsyncDisposableStack (Stage 3)
fullständig
Symbol.dispose, Symbol.asyncDispose
fullständig
deklarationerna using / await using
fullständiga
Övrigt
Objekt
Täckning
RegExp (inkl. /v-mängdnotation, namngivna fångster, lookaround, sticky/global-flaggor)
fullständig
hjälpfunktionerna Iterator (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
fullständiga
ShadowRealm (Stage 3)
fullständig
globalThis
✅
Utöver ren ECMAScript levereras flera lagerindelade paket med Web API:er i Phasis som bibliotek för verkliga projekt i JS förkontrollerar. Se Web API:er för hela ytan och överensstämmelsen per område.
Paket
Globala objekt
WPT
Web Platform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias för globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, mixin Body, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, fullständiga WHATWG Streams (ReadableStream, WritableStream, TransformStream, köstrategier, BYOB), CompressionStream / DecompressionStream (zlib + valfritt brotli via ext-brotli), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, fullständigt 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-ramkodning, utbytbart transportlager via setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (lager ovanpå fetch-transporten, så policykrokar gäller)
100 %
Händelseloop
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
ej tillämpligt (testat mot oracle)
¹ Undantar allowlistade deltester i komprimeringsfixturerna: brotli-fallen, som kräver ext-brotli, och fallen som använder indata baserad på SharedArrayBuffer (EXPECTED_FAILURES i tests/Wpt/WptTest.php).
Alla andra importerade Web Platform Tests godkänns — se Web API:er för uppdelningen av överensstämmelsen.
Det här är ännu inte implementerat
SharedArrayBuffer-semantik för workers utöver en enda agent — atomisk avisering mellan flera trådar i operativsystemet kräver pcntl och finns inte på färdplanen. Atomoperationer för en enda agent fungerar.Intl.Segmenter med grafemkluster som kräver ICU 76+ — beror på värdens version av PHP-tillägget intl. Versionshantering
Phasis följer semver. Versionsserien följer utkasten till ECMAScript-specifikationen:
Phasis-version
Specifikationsmål
Stage 3-förslag
0.x
ES2024
dekoratörer, Temporal, explicit resurshantering, iteratorhjälpare, mängdmetoder
En höjning till 1.0 förutsätter att varje Stage 4-förslag i ES2025-utkastet har implementerats och att semantiken för Promise-avtappning är stabil.