Specifikacijos aprėptis
Phasis atitinka dabartinę ECMAScript specifikaciją (ES2024+) ir seka TC39 pasiūlymus nuo 3 etapo. Šiame puslapyje pateikiamas žmonėms skirtas to, kas iš tikrųjų įtraukta, sąrašas.
Kalba
Funkcija
Būsena
Leksinės deklaracijos (let, const) su TDZ
✅
Bloko, funkcijos ir modulio sritis
✅
Rodyklės funkcijos (su leksiniu this)
✅
Numatyti parametrai, likusieji parametrai, sklaida
✅
Išskaidymas (masyvų, objektų, įdėtinis, numatytosios reikšmės, likusios reikšmės)
✅
Šablonų eilutės, žymėtos šablonų eilutės
✅
Apskaičiuojami savybių pavadinimai
✅
Sutrumpintos savybės ir metodai
✅
Klasės — konstruktoriai, metodai, getteriai/setteriai, statiniai nariai
✅
Klasių laukai (viešieji, privatieji, statiniai)
✅
Privatūs metodai ir prieigos metodai
✅
super metoduose ir konstruktoriuose
✅
Dekoratoriai (3 etapas)
✅
Statiniai inicializavimo blokai
✅
Pasirenkamasis grandinės iškvietimas (?.), nulio ir neapibrėžtos reikšmės sujungimas (??)
✅
Loginio priskyrimo operatoriai (&&=, ||=, ??=)
✅
Skaičių skirtukai (1_000_000)
✅
BigInt literalai (123n) ir operatoriai
✅
Asinchroninės funkcijos, asinchroniniai generatoriai, await modulio viršuje
✅
Generatoriai (sinchroniniai ir asinchroniniai)
✅
for…of, for…in, for await…of
✅
Iteratoriai ir iteruojamieji objektai (Symbol.iterator)
✅
Symbol primityviosios reikšmės ir žinomi simboliai
✅
ES moduliai (import / export, dinaminis import())
✅
import.meta
✅
import attributes (3 etapas)
✅
Griežtasis režimas + Annex B senasis elgesys
✅
Reguliarieji reiškiniai (/u, /v, /d, pavadintos grupės, tikrinimas atgal)
✅
Automatinis kabliataškio įterpimas (ASI)
✅
Hashbang gramatika (#!/usr/bin/env phasis)
✅
Tikri uodeginiai iškvietimai griežtuoju režimu (ES2015, reikalaujama specifikacijos)
✅
Standartinė biblioteka
Pagrindai
Objektas
Aprėptis
Object
visa — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries ir kt.
Array
visa — visi prototipo metodai, įskaitant at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
visa — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
visa — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER ir kt.
BigInt
visa — savavališkas tikslumas per bcmath
Boolean
visa
Math
visa — visi metodai, visi specialūs NaN / Infinity / -0 atvejai
JSON
visa — parse, stringify, pasirinktiniai keitikliai, reviver, įtraukos
Symbol
visa — for, keyFor, visi gerai žinomi simboliai, Symbol.toPrimitive
Function
visa — call, apply, bind, length, name, prototype semantika
Kolekcijos
Objektas
Aprėptis
Map
visa — įskaitant groupBy ir aktyvų iteravimą
Set
visa — įskaitant intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
visa
Asinchroniškumas
Objektas
Aprėptis
Promise
visa — all, race, any, allSettled, withResolvers, asinchroninis iteravimas
AsyncIterator, AsyncGenerator
visa
Mikroužduočių planavimas
✅
Dvejetainiai duomenys
Objektas
Aprėptis
ArrayBuffer, SharedArrayBuffer
visa
DataView
visa — getBigInt64, setBigInt64 ir kt.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
visa
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
visa (tik vienas agentas)
Atspindėjimas ir tarpiniai objektai
Objektas
Aprėptis
Proxy
visi 13 perėmimo taškų, atšaukiamas
Reflect
visi 14 statinių metodų
Klaidos
Objektas
Aprėptis
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
visa
AggregateError
visa
SuppressedError (3 etapo aiškus išteklių valdymas)
visa
Datos ir laikas
Objektas
Aprėptis
Date
visa
Temporal (3 etapas)
visa — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (įskaitant hebrajų, kinų, Dangi, etiopų ir kt.)
Internacionalizavimas
Objektas
Aprėptis
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
visa (kai prieinama, deleguoja į PHP plėtinį intl)
Išteklių valdymas
Objektas
Aprėptis
DisposableStack, AsyncDisposableStack (3 etapas)
visa
Symbol.dispose, Symbol.asyncDispose
visa
using / await using deklaracijos
visa
Kita
Objektas
Aprėptis
RegExp (įskaitant /v aibių žymėjimą, vardines fiksacijas, peržvalgas, sticky/global vėliavėles)
visa
Iterator pagalbinės funkcijos (3 etapas) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
visa
ShadowRealm (3 etapas)
visa
globalThis
✅
Be grynojo ECMAScript, Phasis pateikia kelis sluoksniuotus žiniatinklio API paketus, kuriuos realaus pasaulio JS bibliotekos tikrina iš anksto. Išsamią sąsają ir atitiktį pagal sritis rasite skiltyje Žiniatinklio API .
Paketas
Globalūs objektai
WPT
Žiniatinklio platforma
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (globalThis pseudonimas), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body mišinys, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, visas WHATWG srautų API (ReadableStream, WritableStream, TransformStream, eilių strategijos, BYOB), CompressionStream / DecompressionStream (zlib + pasirinktinai brotli per ext-brotli), navigator
100 %¹
Kriptografija
crypto.getRandomValues, crypto.randomUUID, visas SubtleCrypto (santrauka, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktorius + RFC 6455 kadrų koduotuvas, keičiamas transportas per setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (sluoksniuota virš Fetch transporto, todėl taikomi politikos kabliai)
100 %
Įvykių ciklas
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (3 etapas)
n/a (patikrinta etaloniniais duomenimis)
¹ Neįtraukiant leidžiamų papildomų testų glaudinimo bandymų rinkiniuose: brotli atvejų, kuriems reikia ext-brotli, ir atvejų, kuriuose perduodama įvestis, paremta SharedArrayBuffer (EXPECTED_FAILURES iš tests/Wpt/WptTest.php).
Visi kiti importuoti Web Platform Tests testai sėkmingai vykdomi — atitikties suskirstymą rasite skiltyje Žiniatinklio API .
Kas dar neįgyvendinta
SharedArrayBuffer darbuotojų semantika , apimanti daugiau nei vieną agentą — atominiam pranešimų perdavimui tarp realių OS gijų reikia pcntl, o tai nėra numatyta veiksmų plane. Vieno agento atominės operacijos veikia.Intl.Segmenter su grafemų grupėmis, kurioms reikia ICU 76+ — priklauso nuo pagrindinės aplinkos PHP plėtinio intl versijos. Versijavimas
Phasis naudoja semver. Versijų linija seka ECMAScript specifikacijos juodraščius:
Phasis versija
Specifikacijos tikslas
3 etapo pasiūlymai
0.x
ES2024
dekoratoriai, Temporal, aiškus išteklių valdymas, iteratorių pagalbinės funkcijos, aibių metodai
Versija bus pakelta iki 1.0 tik tada, kai bus įgyvendintas kiekvienas ES2025 juodraščio 4 etapo pasiūlymas ir nusistovės Promise ištuštinimo semantika.