Lewati ke konten

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 ✅

API Platform Web (WHATWG / W3C, bukan TC39)

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.