Suprafața specificației
Phasis vizează specificația ECMAScript actuală (ES2024+) și urmărește propunerile TC39 aflate în etapa 3 sau mai sus. Această pagină este indexul lizibil pentru oameni al funcționalităților livrate efectiv.
Limbaj
Caracteristică
Stare
Declarații lexicale (let, const) cu TDZ
✅
Domeniu de vizibilitate al blocului, funcției și modulului
✅
Funcții săgeată (cu this lexical)
✅
Parametri impliciți, parametri rest, spread
✅
Destructurare (tablouri, obiecte, imbricată, valori implicite, rest)
✅
Șiruri-șablon, șabloane cu etichete
✅
Nume de proprietăți calculate
✅
Proprietăți și metode prescurtate
✅
Clase — constructori, metode, getteri/setteri, statice
✅
Câmpuri de clasă (publice, private, statice)
✅
Metode private și accesori
✅
super în metode și constructori
✅
Decoratori (etapa 3)
✅
Blocuri de inițializare statică
✅
Înlănțuire opțională (?.), combinare cu valori nullish (??)
✅
Operatori de atribuire logică (&&=, ||=, ??=)
✅
Separatoare numerice (1_000_000)
✅
Literali BigInt (123n) și operatori
✅
Funcții asincrone, generatoare asincrone, await la nivel superior
✅
Generatoare (sincrone și asincrone)
✅
for…of, for…in, for await…of
✅
Iteratoare și elemente iterabile (Symbol.iterator)
✅
Primitive Symbol și simboluri bine cunoscute
✅
Module ES (import / export, import() dinamic)
✅
import.meta
✅
import attributes (etapa 3)
✅
Mod strict + comportamente vechi Annex B
✅
Expresii regulate (/u, /v, /d, grupuri denumite, lookbehind)
✅
Inserare automată a punctului și virgulei (ASI)
✅
Gramatică hashbang (#!/usr/bin/env phasis)
✅
Apeluri coadă corecte în mod strict (ES2015, impuse de specificație)
✅
Biblioteca standard
Elemente fundamentale
Obiect
Acoperire
Object
completă — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries, etc.
Array
completă — toate metodele prototipului, inclusiv at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
completă — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
completă — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER, etc.
BigInt
completă — precizie arbitrară prin bcmath
Boolean
completă
Math
completă — toate metodele, fiecare caz special pentru NaN / Infinity / -0
JSON
completă — parse, stringify, înlocuitori personalizați, reviver, indentare
Symbol
completă — for, keyFor, toate simbolurile bine cunoscute, Symbol.toPrimitive
Function
completă — call, apply, bind, length, name, prototype semantică
Colecții
Obiect
Acoperire
Map
completă — inclusiv groupBy și iterare live
Set
completă — inclusiv intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
completă
Asincron
Obiect
Acoperire
Promise
completă — all, race, any, allSettled, withResolvers, iterație asincronă
AsyncIterator, AsyncGenerator
completă
Planificarea microtask-urilor
✅
Date binare
Obiect
Acoperire
ArrayBuffer, SharedArrayBuffer
completă
DataView
completă — getBigInt64, setBigInt64 etc.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
completă
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
completă (numai cu un singur agent)
Reflecție și proxy-uri
Obiect
Acoperire
Proxy
toate cele 13 capcane, revocabile
Reflect
toate cele 14 metode statice
Erori
Obiect
Acoperire
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
completă
AggregateError
completă
SuppressedError (gestionarea explicită a resurselor, etapa 3)
completă
Date și oră
Obiect
Acoperire
Date
completă
Temporal (etapa 3)
completă — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (inclusiv ebraică, chineză, Dangi, etiopiană etc.)
Internaționalizare
Obiect
Acoperire
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
completă (apelează extensia intl a PHP când este disponibilă)
Gestionarea resurselor
Obiect
Acoperire
DisposableStack, AsyncDisposableStack (etapa 3)
completă
Symbol.dispose, Symbol.asyncDispose
completă
declarațiile using / await using
completă
Altele
Obiect
Acoperire
RegExp (inclusiv notația de set /v, capturile cu nume, căutarea în jurul potrivirii, fanioanele sticky/global)
completă
ajutoarele Iterator (etapa 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
completă
ShadowRealm (etapa 3)
completă
globalThis
✅
Dincolo de ECMAScript pur, Phasis include mai multe pachete stratificate de API-uri Web, pentru care bibliotecile JS din aplicații reale verifică prezența în prealabil. Consultați API-uri Web pentru suprafața completă și conformitatea pe fiecare domeniu.
Pachet
Globale
WPT
Web Platform
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias pentru globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, mixin-ul Body, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, WHATWG Streams complet (ReadableStream, WritableStream, TransformStream, strategii de punere în coadă, BYOB), CompressionStream / DecompressionStream (zlib + brotli opțional prin ext-brotli), navigator
100 %¹
Crypto
crypto.getRandomValues, crypto.randomUUID, SubtleCrypto complet (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (constructor + codec de cadre RFC 6455, transport înlocuibil prin setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (stratificat peste transportul fetch, deci se aplică hook-urile de politică)
100 %
Bucla de evenimente
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (etapa 3)
n/a (testat cu oracle)
¹ Excluzând subtestele din setul de comprimare permise explicit: cazurile brotli, care necesită ext-brotli, și cazurile care primesc intrare susținută de SharedArrayBuffer (EXPECTED_FAILURES în tests/Wpt/WptTest.php).
Toate celelalte Web Platform Tests importate trec — consultați API-uri Web pentru detalierea conformității.
Ce nu este încă implementat
Semantica worker-elor SharedArrayBuffer dincolo de un singur agent — notificările atomice între fire reale ale sistemului de operare necesită pcntl și nu sunt planificate. Atomicele pentru un singur agent funcționează.Intl.Segmenter cu grupuri de grafeme care necesită ICU 76+ — depinde de versiunea extensiei intl a PHP gazdă. Versionare
Phasis urmează semver. Linia versiunii urmărește versiunile preliminare ale specificației ECMAScript:
Versiunea Phasis
Versiunea țintă a specificației
Propuneri etapa 3
0.x
ES2024
decoratori, Temporal, gestionarea explicită a resurselor, ajutoare pentru iteratori, metode pentru seturi
Trecerea la versiunea 1.0 depinde de implementarea fiecărei propuneri din etapa 4 a versiunii preliminare ES2025 și de o semantică stabilă pentru golirea cozii Promise.