Pereiti prie turinio

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 ✅

Žiniatinklio platformos API (WHATWG / W3C, ne TC39)

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.