Obseg specifikacije
Phasis cilja na trenutno specifikacijo ECMAScript (ES2024+) in spremlja predloge TC39 na stopnji 3 ali višje. Ta stran je berljiv seznam tega, kar je dejansko vključeno.
Jezik
Funkcija
Stanje
Leksikalne deklaracije (let, const) s časovno mrtvo cono (TDZ)
✅
Obseg bloka, obseg funkcije, obseg modula
✅
Puščične funkcije (z leksikalnim this)
✅
Privzeti parametri, preostali parametri, razširjanje
✅
Razčlenjevanje na sestavne dele (polja, objekti, gnezdena struktura, privzete vrednosti, preostali elementi)
✅
Nizi predlog, označene predloge
✅
Izračunana imena lastnosti
✅
Skrajšane lastnosti in metode
✅
Razredi — konstruktorji, metode, dostopniki, statične metode
✅
Polja razredov (javna, zasebna, statična)
✅
Zasebne metode in dostopniki
✅
super v metodah in konstruktorjih
✅
Dekoratorji (3. stopnja)
✅
Statični inicializacijski bloki
✅
Izbirno veriženje (?.), združevanje z ničelno vrednostjo (??)
✅
Logični operatorji prirejanja (&&=, ||=, ??=)
✅
Ločila v številskih literalih (1_000_000)
✅
Literali BigInt (123n) in operatorji
✅
Asinhrone funkcije, asinhroni generatorji, await na najvišji ravni
✅
Generatorji (sinhroni in asinhroni)
✅
for…of, for…in, for await…of
✅
Iteratorji in iterabilni objekti (Symbol.iterator)
✅
Primitivi Symbol in znani simboli
✅
Moduli ES (import / export, dinamični import())
✅
import.meta
✅
import attributes (3. stopnja)
✅
Strogi način + podedovano vedenje Annex B
✅
Regularni izrazi (/u, /v, /d, poimenovane skupine, preverjanje vnaprej)
✅
Samodejno vstavljanje podpičij (ASI)
✅
Slovnica hashbang (#!/usr/bin/env phasis)
✅
Pravilni repni klici v strogem načinu (ES2015, zahtevani s specifikacijo)
✅
Standardna knjižnica
Osnovno
Objekt
Pokritost
Object
polna — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries in drugo
Array
polna — vse metode prototipa, vključno z at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
polna — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
polna — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER in drugo
BigInt
polna — poljubna natančnost prek bcmath
Boolean
polna
Math
polna — vse metode, vsi posebni primeri za NaN / Infinity / -0
JSON
polna — parse, stringify, lastni nadomestki, oživljalnik, zamiki
Symbol
polna — for, keyFor, vsi znani simboli, Symbol.toPrimitive
Function
polna — semantika call, apply, bind, length, name, prototype
Zbirke
Objekt
Pokritost
Map
polna — vključno z groupBy in sprotnim iteriranjem
Set
polna — vključno z intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
polna
Asinhrono
Objekt
Pokritost
Promise
polna — all, race, any, allSettled, withResolvers, asinhrona iteracija
AsyncIterator, AsyncGenerator
polna
Razporejanje mikroopravil
✅
Binarni podatki
Objekt
Pokritost
ArrayBuffer, SharedArrayBuffer
polna
DataView
polna — getBigInt64, setBigInt64 in drugo
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
polna
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
polna (samo z enim izvajalnim sklopom)
Refleksija in posredniki
Predmet
Pokritost
Proxy
vseh 13 pasti, preklicljive
Reflect
vseh 14 statičnih metod
Napake
Predmet
Pokritost
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
popolna
AggregateError
popolna
SuppressedError (upravljanje virov, stopnja 3)
popolna
Datumi in čas
Predmet
Pokritost
Date
popolna
Temporal (stopnja 3)
popolna — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (vključno s hebrejskim, kitajskim, dangi, etiopskim itd.)
Internacionalizacija
Predmet
Pokritost
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
popolna (če je na voljo, uporabi razširitev intl za PHP)
Upravljanje virov
Predmet
Pokritost
DisposableStack, AsyncDisposableStack (stopnja 3)
popolna
Symbol.dispose, Symbol.asyncDispose
popolna
deklaraciji using / await using
popolna
Drugo
Predmet
Pokritost
RegExp (vključno z zapisom množic /v, poimenovanimi zajemi, iskanjem v okolici, zastavicama sticky/global)
popolna
pomožni funkciji Iterator (stopnja 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
popolna
ShadowRealm (stopnja 3)
popolna
globalThis
✅
Poleg čistega ECMAScript Phasis ponuja več slojev paketov API-jev spleta, za katere knjižnice JS v praksi vnaprej preverijo podporo. Za celoten nabor in skladnost po področjih glejte API-je spleta .
Paket
Globalni objekti
WPT
Spletna platforma
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (vzdevek za globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, celoten WHATWG Streams (ReadableStream, WritableStream, TransformStream, strategije čakanja v vrsti, BYOB), CompressionStream / DecompressionStream (zlib + neobvezni brotli prek ext-brotli), navigator
100 %¹
Kriptografija
crypto.getRandomValues, crypto.randomUUID, celoten SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktor + kodirnik okvirjev RFC 6455, zamenljiv prenos prek setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (zgrajen na prenosu fetch, zato veljajo kavlji pravilnikov)
100 %
Zanka dogodkov
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (stopnja 3)
n/a (preverjeno z oracle)
¹ Izključeni so podtesti s seznama dovoljenih v testnih primerih stiskanja: primeri brotli, ki potrebujejo ext-brotli, in primeri, ki prejmejo vhod, podprt z SharedArrayBuffer (EXPECTED_FAILURES v tests/Wpt/WptTest.php).
Vsi drugi uvoženi testi Web Platform Tests so uspešni — razčlenitev skladnosti si oglejte pri API-jih spleta .
Kaj še ni implementirano
Semantika delavcev SharedArrayBuffer zunaj enega agenta — večnitno atomsko obveščanje med dejanskimi nitmi OS zahteva pcntl in ni v načrtu. Atomske operacije znotraj enega agenta delujejo.Intl.Segmenter z grafemskimi skupinami, ki zahtevajo ICU 76+ — odvisno je od različice razširitve intl gostiteljevega PHP. Različice
Phasis upošteva semantično različičenje. Veja različice sledi osnutkom specifikacije ECMAScript:
Različica Phasis
Ciljna specifikacija
Predlogi stopnje 3
0.x
ES2024
dekoratorji, Temporal, izrecno upravljanje virov, pomožne funkcije za iteratorje, metode množic
Prehod na 1.0 je pogojen z implementacijo vseh predlogov stopnje 4 iz osnutka ES2025 in stabilno semantiko praznjenja Promise.