Ugrás a tartalomhoz

Specifikáció lefedettsége

A(z) Phasis az aktuális ECMAScript-specifikációt (ES2024+) célozza, és nyomon követi a TC39 Stage 3-as és annál előrehaladottabb javaslatait. Ez az oldal az élesben elérhető funkciók közérthető jegyzéke.

Nyelv

Funkció Állapot
Lexikai deklarációk (let, const) TDZ-vel ✅
Blokk-, függvény- és modulszintű hatókör ✅
Nyílfüggvények (lexikai this-szel) ✅
Alapértelmezett paraméterek, rest paraméterek, spread ✅
Destrukturálás (tömb, objektum, beágyazott elemek, alapértékek, rest) ✅
Sablonliterálok, címkézett sablonok ✅
Számított tulajdonságnevek ✅
Rövidített tulajdonságok és metódusok ✅
Osztályok — konstruktorok, metódusok, getterek/setterek, statikus elemek ✅
Osztálymezők (publikus, privát, statikus) ✅
Privát metódusok és hozzáférők ✅
super metódusokban és konstruktorokban ✅
Dekorátorok (Stage 3) ✅
Statikus inicializáló blokkok ✅
Opcionális láncolás (?.), nullish coalescing (??) ✅
Logikai értékadás-operátorok (&&=, ||=, ??=) ✅
Számelválasztók (1_000_000) ✅
BigInt-literálok (123n) és operátorok ✅
Aszinkron függvények, aszinkron generátorok, legfelső szintű await ✅
Generátorok (szinkron és aszinkron) ✅
for…of, for…in, for await…of ✅
Iterátorok és iterálható elemek (Symbol.iterator) ✅
Symbol primitívek és jól ismert szimbólumok ✅
ES-modulok (import / export, dinamikus import()) ✅
import.meta ✅
import attributes (Stage 3) ✅
Szigorú mód + Annex B örökölt viselkedések ✅
Reguláris kifejezések (/u, /v, /d, névvel ellátott csoportok, előrenézés és hátranézés) ✅
Automatikus pontosvessző-beszúrás (ASI) ✅
Hashbang nyelvtan (#!/usr/bin/env phasis) ✅
Valódi tail callok szigorú módban (ES2015, a specifikáció előírása) ✅

Szabványos könyvtár

Alapvető objektumok

Objektum Lefedettség
Object teljes — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries stb.
Array teljes — minden prototípus-metódus, köztük at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String teljes — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number teljes — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER stb.
BigInt teljes — tetszőleges pontosságú számítás a bcmath segítségével
Boolean teljes
Math teljes — minden metódus, a NaN / Infinity / -0 minden különleges esete
JSON teljes — parse, stringify, egyedi replacerek, reviver, behúzás
Symbol teljes — for, keyFor, minden jól ismert szimbólum, Symbol.toPrimitive
Function teljes — call, apply, bind, length, name, prototype szemantikája

Kollekciók

Objektum Lefedettség
Map teljes — többek között groupBy és élő iteráció
Set teljes — többek között intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry teljes

Aszinkron elemek

Objektum Lefedettség
Promise teljes — all, race, any, allSettled, withResolvers, aszinkron iteráció
AsyncIterator, AsyncGenerator teljes
Mikrofeladatok ütemezése ✅

Bináris adatok

Objektum Lefedettség
ArrayBuffer, SharedArrayBuffer teljes
DataView teljes — getBigInt64, setBigInt64 stb.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array teljes
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync teljes (csak egyetlen ügynök esetén)

Reflexió és proxyk

Objektum Lefedettség
Proxy mind a 13 csapda, visszavonható
Reflect mind a 14 statikus metódus

Hibák

Objektum Lefedettség
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError teljes
AggregateError teljes
SuppressedError (Stage 3 explicit erőforrás-kezelés) teljes

Dátum és idő

Objektum Lefedettség
Date teljes
Temporal (Stage 3) teljes — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (többek között héber, kínai, dangi, etióp stb.)

Nemzetköziesítés

Objektum Lefedettség
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter teljes (elérhetőség esetén a(z) PHP intl-kiterjesztésére támaszkodik)

Erőforrás-kezelés

Objektum Lefedettség
DisposableStack, AsyncDisposableStack (Stage 3) teljes
Symbol.dispose, Symbol.asyncDispose teljes
using / await using deklarációk teljes

Egyéb

Objektum Lefedettség
RegExp (többek között /v halmazjelölés, névvel ellátott capture-ek, előrenézés és hátranézés, sticky/global flag-ek) teljes
Iterator segédfüggvények (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find teljes
ShadowRealm (Stage 3) teljes
globalThis ✅

Web Platform API-k (WHATWG / W3C, nem TC39)

A tiszta ECMAScripten túl a(z) Phasis több, rétegekbe rendezett Web API-csomagot is tartalmaz, amelyeket a valós JS könyvtárak előzetesen ellenőriznek. A teljes felület és az egyes területek megfelelősége a Web API-k oldalon látható.

Csomag Globális objektumok WPT
Web Platform URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (a(z) globalThis aliasa), DOMException 100 %
Fetch fetch, Request, Response, Headers, Body mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, teljes WHATWG Streams (ReadableStream, WritableStream, TransformStream, sorba állítási stratégiák, BYOB), CompressionStream / DecompressionStream (zlib + opcionális brotli a(z) ext-brotli használatával), navigator 100 %¹
Crypto crypto.getRandomValues, crypto.randomUUID, teljes 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 keretkodek, cserélhető átviteli réteg a(z) setWebSocketTransport segítségével) 100 %
XHR XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (a fetch átviteli rétegre épül, ezért a házirend-hookok érvényesülnek) 100 %
Eseményhurok setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3) n/a (orákulumtesztekkel ellenőrizve)

¹ A tömörítési tesztadatok engedélyezőlistáján szereplő alesetek kivételével: a brotli-esetek, amelyekhez ext-brotli szükséges, valamint azok az esetek, amelyek SharedArrayBuffer-alapú bemenetet adnak át (EXPECTED_FAILURES a(z) tests/Wpt/WptTest.php-ban).

Az összes többi importált Web Platform Test sikeres — a megfelelőségi bontást a Web API-k oldalon találja.

Ami még nincs megvalósítva

  • SharedArrayBuffer-munkerszemantika egyetlen ügynökön túl — a valódi operációsrendszer-szálak közötti, többszálú atomikus értesítéshez pcntl szükséges, és nem szerepel az ütemtervben. Az egyetlen ügynökön belüli atomikus műveletek működnek.
  • Intl.Segmenter ICU 76+-t igénylő grafémaklaszterekkel — a gazdagép PHP-jának intl-kiterjesztésverziójától függ.

Verziózás

A(z) Phasis a semvert követi. A verzióág az ECMAScript specifikációtervezeteihez igazodik:

Phasis verzió Specifikációs cél Stage 3 javaslatok
0.x ES2024 dekorátorok, Temporal, explicit erőforrás-kezelés, iterátor-segédek, halmazmetódusok

Az 1.0-s verzió kiadásának feltétele, hogy az ES2025-tervezet minden Stage 4-es javaslata megvalósuljon, és stabil legyen a Promise-ok ürítésének szemantikája.