Cakupan spesifikasi
Phasis menargetkan spesifikasi ECMAScript saat ini (ES2024+) dan mengikuti proposal TC39 Stage 3 ke atas. Halaman ini adalah indeks yang dapat dibaca manusia tentang fitur yang benar-benar disertakan.
Bahasa
Fitur
Status
Deklarasi leksikal (let, const) dengan TDZ
✅
Cakupan blok, cakupan fungsi, cakupan modul
✅
Fungsi panah (dengan this leksikal)
✅
Parameter default, parameter rest, spread
✅
Destructuring (array, objek, bertingkat, default, rest)
✅
Literal templat, templat bertag
✅
Nama properti terhitung
✅
Properti dan metode singkat
✅
Kelas — konstruktor, metode, getter/setter, static
✅
Field kelas (publik, privat, static)
✅
Metode dan accessor privat
✅
super dalam metode dan konstruktor
✅
Decorator (Stage 3)
✅
Blok inisialisasi static
✅
Optional chaining (?.), nullish coalescing (??)
✅
Operator penugasan logis (&&=, ||=, ??=)
✅
Pemisah numerik (1_000_000)
✅
Literal BigInt (123n) dan operator
✅
Fungsi async, generator async, await tingkat atas
✅
Generator (sinkron dan asinkron)
✅
for…of, for…in, for await…of
✅
Iterator dan iterable (Symbol.iterator)
✅
Primitif Symbol dan simbol yang dikenal luas
✅
Modul ES (import / export, import() dinamis)
✅
import.meta
✅
import attributes (Stage 3)
✅
Mode strict + perilaku lama Annex B
✅
Ekspresi reguler (/u, /v, /d, grup bernama, lookbehind)
✅
Penyisipan titik koma otomatis (ASI)
✅
Tata bahasa hashbang (#!/usr/bin/env phasis)
✅
Pemanggilan ekor yang tepat dalam mode strict (ES2015, diwajibkan spesifikasi)
✅
Pustaka standar
Fundamental
Objek
Cakupan
Object
lengkap — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries, dll.
Array
lengkap — setiap metode prototipe termasuk at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
lengkap — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
lengkap — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER, dll.
BigInt
lengkap — presisi arbitrer melalui bcmath
Boolean
lengkap
Math
lengkap — setiap metode, setiap kasus khusus untuk NaN / Infinity / -0
JSON
lengkap — parse, stringify, pengganti khusus, reviver, indentasi
Symbol
lengkap — for, keyFor, semua simbol yang dikenal luas, Symbol.toPrimitive
Function
lengkap — semantik call, apply, bind, length, name, prototype
Koleksi
Objek
Cakupan
Map
lengkap — termasuk groupBy dan iterasi langsung
Set
lengkap — termasuk intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
lengkap
Asinkron
Objek
Cakupan
Promise
lengkap — all, race, any, allSettled, withResolvers, iterasi async
AsyncIterator, AsyncGenerator
lengkap
Penjadwalan microtask
✅
Data biner
Objek
Cakupan
ArrayBuffer, SharedArrayBuffer
lengkap
DataView
lengkap — getBigInt64, setBigInt64, dll.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
lengkap
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
lengkap (hanya satu agen)
Refleksi dan proxy
Objek
Cakupan
Proxy
seluruh 13 trap, dapat dicabut
Reflect
seluruh 14 metode static
Error
Objek
Cakupan
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
lengkap
AggregateError
lengkap
SuppressedError (pengelolaan sumber daya eksplisit Stage 3)
lengkap
Tanggal dan waktu
Objek
Cakupan
Date
lengkap
Temporal (Stage 3)
lengkap — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (termasuk Ibrani, Tionghoa, Dangi, Etiopia, dll.)
Internasionalisasi
Objek
Cakupan
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
lengkap (mendelegasikan ke ekstensi intl milik PHP jika tersedia)
Pengelolaan sumber daya
Objek
Cakupan
DisposableStack, AsyncDisposableStack (Stage 3)
lengkap
Symbol.dispose, Symbol.asyncDispose
lengkap
deklarasi using / await using
lengkap
Lainnya
Objek
Cakupan
RegExp (termasuk notasi set /v, penangkapan bernama, lookaround, flag sticky/global)
lengkap
helper Iterator (Stage 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
lengkap
ShadowRealm (Stage 3)
lengkap
globalThis
✅
Di luar ECMAScript murni, Phasis menyertakan beberapa paket API Web berlapis yang diperiksa lebih dulu oleh pustaka JS di dunia nyata. Lihat API Web untuk cakupan lengkap dan kesesuaian per area.
Paket
Global
WPT
Platform Web
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (alias dari globalThis), DOMException
100 %
Fetch
fetch, Request, Response, Headers, mixin Body, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, WHATWG Streams lengkap (ReadableStream, WritableStream, TransformStream, strategi antrean, BYOB), CompressionStream / DecompressionStream (zlib + brotli opsional melalui ext-brotli), navigator
100 %¹
Kripto
crypto.getRandomValues, crypto.randomUUID, SubtleCrypto lengkap (digest, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktor + codec frame RFC 6455, transport yang dapat diganti melalui setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (berlapis di atas transport fetch, sehingga hook kebijakan berlaku)
100 %
Event loop
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (Stage 3)
n/a (diuji dengan oracle)
¹ Tidak termasuk subtes yang diizinkan pada fixture kompresi: kasus brotli yang memerlukan ext-brotli, dan kasus yang memberikan input berbasis SharedArrayBuffer (EXPECTED_FAILURES di tests/Wpt/WptTest.php).
Semua Web Platform Tests impor lainnya lulus — lihat API Web untuk perincian kesesuaiannya.
Yang belum diimplementasikan
Semantik worker SharedArrayBuffer di luar satu agen — notifikasi atomik multithread di antara thread OS nyata memerlukan pcntl dan tidak ada dalam rencana. Atomik satu agen berfungsi.Intl.Segmenter dengan gugus grafem yang memerlukan ICU 76+ — bergantung pada versi ekstensi intl milik host PHP. Pemberian versi
Phasis mengikuti semver. Jalur versinya mengikuti draf spesifikasi ECMAScript:
Versi Phasis
Target spesifikasi
Proposal Stage 3
0.x
ES2024
decorator, Temporal, pengelolaan sumber daya eksplisit, helper iterator, metode set
Peningkatan ke 1.0 bergantung pada implementasi setiap proposal Stage 4 dalam draf ES2025 dan semantik pengurasan Promise yang stabil.