Spetsifikatsiooni ulatus
Phasis järgib kehtivat ECMAScripti spetsifikatsiooni (ES2024+) ja jälgib TC39 ettepanekuid alates 3. etapist. Sellel lehel on inimloetav ülevaade tegelikult tarnitust.
Keel
Funktsioon
Olek
Leksikaalsed deklaratsioonid (let, const) koos TDZ-iga
✅
Ploki-, funktsiooni- ja mooduliulatus
✅
Noolefunktsioonid (koos leksikaalse this-iga)
✅
Vaikeparameetrid, ülejäänud parameetrid, levitamine
✅
Destruktureerimine (massiiv, objekt, pesastatud, vaikeväärtused, ülejäänud)
✅
Malliliteraalid ja märgendatud mallid
✅
Arvutatavad omaduste nimed
✅
Lühikirjapärased omadused ja meetodid
✅
Klassid — konstruktorid, meetodid, hankijad/seadistajad, staatilised liikmed
✅
Klassiväljad (avalikud, privaatsed, staatilised)
✅
Privaatsed meetodid ja pääsurutiinid
✅
super meetodites ja konstruktorites
✅
Dekoraatorid (3. etapp)
✅
Staatilised lähtestusplokid
✅
Valikuline aheldamine (?.), nullish-ühendamine (??)
✅
Loogilised omistamisoperaatorid (&&=, ||=, ??=)
✅
Arvude eraldajad (1_000_000)
✅
BigInt-literaalid (123n) ja operaatorid
✅
Asünkroonsed funktsioonid, asünkroonsed generaatorid, ülataseme await
✅
Generaatorid (sünkroonsed ja asünkroonsed)
✅
for…of, for…in, for await…of
✅
Iteraatorid ja itereeritavad objektid (Symbol.iterator)
✅
Symboli primitiivid ja tuntud sümbolid
✅
ES-moodulid (import / export, dünaamiline import())
✅
import.meta
✅
import attributes (3. etapp)
✅
Range režiim ja Annex B pärandkäitumised
✅
Regulaaravaldised (/u, /v, /d, nimega rühmad, tagasivaatamine)
✅
Automaatne semikooloni lisamine (ASI)
✅
Hashbang-grammatika (#!/usr/bin/env phasis)
✅
Korrektsed sabakutsed ranges režiimis (ES2015, nõutud spetsifikatsioonis)
✅
Standardteek
Põhitüübid
Objekt
Tugi
Object
täielik — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries jne
Array
täielik — kõik prototüübi meetodid, sealhulgas at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
täielik — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
täielik — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER jne
BigInt
täielik — suvaline täpsus bcmath-i abil
Boolean
täielik
Math
täielik — kõik meetodid ja erijuhud väärtuste NaN / Infinity / -0 korral
JSON
täielik — parse, stringify, kohandatud asendajad, taaselustaja, taane
Symbol
täielik — for, keyFor, kõik tuntud sümbolid, Symbol.toPrimitive
Function
täielik — call, apply, bind, length, name, prototype semantika
Kogumid
Objekt
Tugi
Map
täielik, sh groupBy ja elav iteratsioon
Set
täielik, sh intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
täielik
Asünkroonsus
Objekt
Tugi
Promise
täielik — all, race, any, allSettled, withResolvers, asünkroonne iteratsioon
AsyncIterator, AsyncGenerator
täielik
Mikroülesannete ajastamine
✅
Binaarandmed
Objekt
Tugi
ArrayBuffer, SharedArrayBuffer
täielik
DataView
täielik — getBigInt64, setBigInt64 jne
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
täielik
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
täielik (ainult ühe agendiga)
Peegeldus ja puhverserverid
Objekt
Hõlmatus
Proxy
kõik 13 lõksu, tühistatavad
Reflect
kõik 14 staatilist meetodit
Vead
Objekt
Hõlmatus
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
täielik
AggregateError
täielik
SuppressedError (3. etapi selgesõnaline ressursihaldus)
täielik
Kuupäevad ja kellaaeg
Objekt
Hõlmatus
Date
täielik
Temporal (Stage 3)
täielik — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (sh heebrea, hiina, Dangi, etioopia jm)
Rahvusvahelistamine
Objekt
Hõlmatus
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
täielik (kasutab võimaluse korral PHP laiendust intl)
Ressursside haldus
Objekt
Hõlmatus
DisposableStack, AsyncDisposableStack (Stage 3)
täielik
Symbol.dispose, Symbol.asyncDispose
täielik
using / await using deklaratsioonid
täielik
Muu
Objekt
Hõlmatus
RegExp (sh /v hulgatähistus, nimega hõive, ette- ja tagasivaade, kleepuvad/globaalsed lipud)
täielik
Iterator abifunktsioonid (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
täielik
ShadowRealm (Stage 3)
täielik
globalThis
✅
Lisaks puhtale ECMAScriptile tarnib Phasis mitu kihilist veebiliideste paketti, mida päris JS teegid eelkontrollivad. Täieliku ülevaate ja valdkondade vastavuse kohta vaadake Web APIs .
Pakett
Globaalsed objektid
WPT
Veebiplatvorm
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (globalThis alias), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, täielikud WHATWG vood (ReadableStream, WritableStream, TransformStream, järjekorda seadmisstrateegiad, BYOB), CompressionStream / DecompressionStream (zlib + valikuline brotli laiendusest ext-brotli), navigator
100 %¹
Krüpto
crypto.getRandomValues, crypto.randomUUID, täielik 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 kaadrite kodek, vahetatav transport setWebSocketTransport kaudu)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (fetchi transpordikihi peal, seega kehtivad poliitikakonksud)
100 %
Sündmuste tsükkel
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
pole kohaldatav (oraakliga testitud)
¹ Välja arvatud lubatud alamtestid tihendamise testandmetes: brotli juhud, mis vajavad ext-brotli, ning juhud, mis kasutavad SharedArrayBuffer-põhist sisendit (EXPECTED_FAILURES asukohas tests/Wpt/WptTest.php).
Kõik muud imporditud veebiplatvormi testid läbivad — vastavuse jaotust vt Web APIs .
Veel rakendamata
SharedArrayBufferi töötajate semantika väljaspool üht agenti — mitmelõimeline aatomiline teavitus päris operatsioonisüsteemi lõimede vahel vajab pcntl ja pole tegevuskavas. Ühe agendi aatomitehted toimivad.Intl.Segmenter ICU 76+ vajavate grafeemiklastritega — sõltub hosti PHP laienduse versioonist intl. Versioonimine
Phasis järgib semverit. Versioonirida jälgib ECMAScripti spetsifikatsiooni mustandeid:
Phasis versioon
Spetsifikatsiooni sihtversioon
3. etapi ettepanekud
0.x
ES2024
dekoraatorid, Temporal, selgesõnaline ressursihaldus, iteraatori abifunktsioonid, hulgameetodid
Versioonile 1.0 üleminek eeldab, et kõik ES2025 mustandis olevad 4. etapi ettepanekud on rakendatud ja Promise'i tühjendamise semantika stabiilne.