Hoppa till innehåll

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 ✅

Web Platform API:er (WHATWG / W3C, inte TC39)

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.