Liigu sisu juurde

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 ✅

Veebiplatvormi API-d (WHATWG / W3C, mitte TC39)

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.