Specifikācijas aptvērums
Phasis ir paredzēts pašreizējai ECMAScript specifikācijai (ES2024+) un seko TC39 priekšlikumiem, kas sasnieguši 3. stadiju vai augstāku. Šī lapa ir cilvēkiem lasāms pārskats par to, kas faktiski ir ieviests.
Valoda
Funkcija
Statuss
Leksiskās deklarācijas (let, const) ar TDZ
✅
Bloka, funkcijas un moduļa tvērums
✅
Bultfunkcijas (ar leksisko this)
✅
Noklusējuma parametri, atlikuma parametri, izkliedēšana
✅
Destrukturēšana (masīvs, objekts, ligzdoti elementi, noklusējumi, atlikuma vērtības)
✅
Veidņu literāļi, marķēti veidņu literāļi
✅
Aprēķināmi īpašumu nosaukumi
✅
Saīsinātās īpašību un metožu pieraksta formas
✅
Klases — konstruktori, metodes, iegūšanas un iestatīšanas metodes, statiskie elementi
✅
Klases lauki (publiski, privāti, statiski)
✅
Privātās metodes un piekļuves metodes
✅
super metodēs un konstruktoros
✅
Dekoratori (3. stadija)
✅
Statiskie inicializācijas bloki
✅
Izvēles ķēdēšana (?.), nullish apvienošana (??)
✅
Loģiskās piešķiršanas operatori (&&=, ||=, ??=)
✅
Skaitļu atdalītāji (1_000_000)
✅
BigInt literāļi (123n) un operatori
✅
Asinhronās funkcijas, asinhronie ģeneratori, augstākā līmeņa await
✅
Ģeneratori (sinhronie un asinhronie)
✅
for…of, for…in, for await…of
✅
Iteratori un iterējamie objekti (Symbol.iterator)
✅
Symbol primitīvie tipi un iepriekš definētie simboli
✅
ES moduļi (import / export, dinamiskais import())
✅
import.meta
✅
import attributes (3. stadija)
✅
Stingrais režīms un Annex B mantotā darbība
✅
Regulārās izteiksmes (/u, /v, /d, nosauktas grupas, skatīšanās atpakaļ)
✅
Automātiska semikolu ievietošana (ASI)
✅
Hashbang gramatika (#!/usr/bin/env phasis)
✅
Pareizi beigu izsaukumi stingrajā režīmā (ES2015, prasīti specifikācijā)
✅
Standarta bibliotēka
Pamatobjekti
Objekts
Aptvērums
Object
pilns — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries u. c.
Array
pilns — visas prototipa metodes, tostarp at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
pilns — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
pilns — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER u. c.
BigInt
pilns — patvaļīga precizitāte, izmantojot bcmath
Boolean
pilns
Math
pilns — visas metodes un visi īpašie gadījumi saistībā ar NaN / Infinity / -0
JSON
pilns — parse, stringify, pielāgoti aizvietotāji, reviver, atkāpes
Symbol
pilns — for, keyFor, visi iepriekš definētie simboli, Symbol.toPrimitive
Function
pilns — call, apply, bind, length, name, prototype semantika
Kolekcijas
Objekts
Aptvērums
Map
pilns — tostarp groupBy un iterācija ar aktuālajiem datiem
Set
pilns — tostarp intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
pilns
Asinhronā darbība
Objekts
Aptvērums
Promise
pilns — all, race, any, allSettled, withResolvers, asinhronā iterācija
AsyncIterator, AsyncGenerator
pilns
Mikrouzdevumu plānošana
✅
Binārie dati
Objekts
Aptvērums
ArrayBuffer, SharedArrayBuffer
pilns
DataView
pilns — getBigInt64, setBigInt64 u. c.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
pilns
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
pilns (tikai viena aģenta režīmā)
Refleksija un starpniekobjekti
Objekts
Aptvērums
Proxy
visi 13 slazdi, atsaucams
Reflect
visas 14 statiskās metodes
Kļūdas
Objekts
Aptvērums
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
pilns
AggregateError
pilns
SuppressedError (3. stadijas skaidra resursu pārvaldība)
pilns
Datumi un laiks
Objekts
Aptvērums
Date
pilns
Temporal (3. stadija)
pilns — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (tostarp ebreju, ķīniešu, Dangi, etiopiešu u. c.)
Internacionalizācija
Objekts
Aptvērums
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
pilns (ja pieejams, izmanto PHP intl paplašinājumu)
Resursu pārvaldība
Objekts
Aptvērums
DisposableStack, AsyncDisposableStack (3. stadija)
pilns
Symbol.dispose, Symbol.asyncDispose
pilns
using / await using deklarācijas
pilns
Cits
Objekts
Aptvērums
RegExp (tostarp /v kopu pieraksts, nosauktas tveršanas grupas, skatīšanās uz priekšu un atpakaļ, lipīgie/globālie karodziņi)
pilns
Iterator palīgfunkcijas (3. stadija) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
pilns
ShadowRealm (3. stadija)
pilns
globalThis
✅
Papildus pašam ECMAScript, Phasis piedāvā vairākas Web API pakotņu kārtas, ko reālās pasaules JS bibliotēkas pārbauda iepriekš. Pilnu funkciju klāstu un atbilstību katrā jomā skatiet lapā Tīmekļa API .
Pakotne
Globālie objekti
WPT
Tīmekļa platforma
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (globalThis aizstājvārds), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body papildinājums, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, pilna WHATWG plūsmu saskarne (ReadableStream, WritableStream, TransformStream, rindas stratēģijas, BYOB), CompressionStream / DecompressionStream (zlib un neobligāts brotli, izmantojot ext-brotli), navigator
100 %¹
Kriptogrāfija
crypto.getRandomValues, crypto.randomUUID, pilns SubtleCrypto (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktors un RFC 6455 kadru kodētājs un dekodētājs, aizstājams transports, izmantojot setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (veidots virs fetch transporta, tāpēc darbojas politiku āķi)
100 %
Notikumu cikls
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (3. stadija)
n/a (pārbaudīts ar oracle)
¹ Izņemot atļauto apakštestu kopas saspiešanas pārbaudēs: brotli gadījumus, kam nepieciešams ext-brotli, un gadījumus, kuros ievade balstīta uz SharedArrayBuffer (EXPECTED_FAILURES vidē tests/Wpt/WptTest.php).
Visi pārējie importētie Web Platform Tests izpildās sekmīgi — atbilstības pārskatu skatiet lapā Tīmekļa API .
Kas vēl nav ieviests
SharedArrayBuffer darbinieku semantika ārpus viena aģenta — atomārai paziņošanai starp vairākām īstām OS pavedienu kopām nepieciešams pcntl, un tas nav izstrādes plānos. Viena aģenta atomārās darbības darbojas.Intl.Segmenter ar grafēmu kopām, kam nepieciešama ICU 76+ — atkarīgs no resursdatora PHP paplašinājuma versijas: intl. Versiju veidošana
Phasis ievēro semver. Versiju līnija seko ECMAScript specifikācijas melnrakstiem:
Phasis versija
Specifikācijas mērķis
3. stadijas priekšlikumi
0.x
ES2024
dekoratori, Temporal, skaidra resursu pārvaldība, iteratoru palīgfunkcijas, kopu metodes
Versija 1.0 tiks izdota, kad būs ieviesti visi 4. stadijas priekšlikumi ES2025 melnrakstā un būs stabila Promise iztukšošanas semantika.