نطاق المواصفات
يستهدف Phasis مواصفات ECMAScript الحالية (ES2024+) ويتابع مقترحات TC39 في المرحلة 3 وما بعدها. تعرض هذه الصفحة فهرسًا مقروءًا لما تم شحنه فعليًا.
اللغة
الميزة
الحالة
التصريحات المعجمية (let، const) مع TDZ
✅
نطاق الكتلة، ونطاق الدالة، ونطاق الوحدة
✅
دوال السهم (مع this معجمي)
✅
المعلمات الافتراضية، ومعلمات الباقي، والتوسيع
✅
التفكيك (مصفوفات وكائنات ومتداخل وافتراضيات وباقٍ)
✅
القوالب الحرفية والقوالب الموسومة
✅
أسماء الخصائص المحسوبة
✅
الخصائص والأساليب المختصرة
✅
الفئات — المنشئات والأساليب والمُحصّلات/المُعيّنات والأساليب الساكنة
✅
حقول الفئات (عامة وخاصة وساكنة)
✅
الأساليب والموصلات الخاصة
✅
super في الأساليب والمنشئات
✅
المزيّنات (المرحلة 3)
✅
كتل التهيئة الساكنة
✅
التسلسل الاختياري (?.)، والدمج مع القيم الفارغة (??)
✅
معاملات الإسناد المنطقي (&&=، ||=، ??=)
✅
فواصل الأعداد (1_000_000)
✅
قيم BigInt الحرفية (123n) ومعاملاتها
✅
الدوال غير المتزامنة، والمولدات غير المتزامنة، وawait على المستوى الأعلى
✅
المولدات (المتزامنة وغير المتزامنة)
✅
for…of، for…in، for await…of
✅
المكررات والقيم القابلة للتكرار (Symbol.iterator)
✅
القيم الأولية Symbol والرموز المعروفة
✅
وحدات ES (import / export، وimport() ديناميكي)
✅
import.meta
✅
import attributes (المرحلة 3)
✅
الوضع الصارم + سلوكيات Annex B القديمة
✅
التعبيرات النمطية (/u، /v، /d، المجموعات المسماة، والنظر للخلف)
✅
الإدراج التلقائي للفاصلة المنقوطة (ASI)
✅
قواعد Hashbang (#!/usr/bin/env phasis)
✅
استدعاءات الذيل الصحيحة في الوضع الصارم (ES2015، مطلوبة بموجب المواصفات)
✅
المكتبة القياسية
الأساسيات
الكائن
التغطية
Object
كاملة — keys، values، entries، assign، create، freeze، seal، getOwnPropertyDescriptor(s)، setPrototypeOf، getOwnPropertyNames، getOwnPropertySymbols، hasOwn، groupBy، fromEntries، إلخ.
Array
كاملة — كل أساليب النموذج الأولي، بما فيها at، flatMap، flat، findLast، findLastIndex، toReversed، toSorted، toSpliced، with، group، groupToMap
String
كاملة — at، codePointAt، match، matchAll، replaceAll، padStart، padEnd، trimStart، trimEnd، isWellFormed، toWellFormed
Number
كاملة — isFinite، isInteger، isNaN، isSafeInteger، EPSILON، MAX_SAFE_INTEGER، إلخ.
BigInt
كاملة — دقة اعتباطية عبر bcmath
Boolean
كاملة
Math
كاملة — كل الأساليب وكل الحالات الخاصة لـ NaN / Infinity / -0
JSON
كاملة — parse، stringify، دوال استبدال مخصصة، ودالة الإحياء، والمسافة البادئة
Symbol
كاملة — for، keyFor، كل الرموز المعروفة، Symbol.toPrimitive
Function
كاملة — دلالات call، apply، bind، length، name، prototype
المجموعات
الكائن
التغطية
Map
كاملة — بما فيها groupBy والتكرار الحي
Set
كاملة — بما فيها intersection، union، difference، symmetricDifference، isSubsetOf، isSupersetOf، isDisjointFrom
WeakMap، WeakSet، WeakRef، FinalizationRegistry
كاملة
غير متزامن
الكائن
التغطية
Promise
كاملة — all، race، any، allSettled، withResolvers، والتكرار غير المتزامن
AsyncIterator، AsyncGenerator
كاملة
جدولة المهام الدقيقة
✅
البيانات الثنائية
الكائن
التغطية
ArrayBuffer، SharedArrayBuffer
كاملة
DataView
كاملة — getBigInt64، setBigInt64، إلخ.
Int8Array، Uint8Array، Uint8ClampedArray، Int16Array، Uint16Array، Int32Array، Uint32Array، BigInt64Array، BigUint64Array، Float16Array، Float32Array، Float64Array
كاملة
Atomics — add، sub، and، or، xor، compareExchange، exchange، isLockFree، load، notify، pause، store، wait، waitAsync
كاملة (لوكيل واحد فقط)
الانعكاس والوكلاء
الكائن
التغطية
Proxy
المصائد الـ13 كلها، وقابل للإلغاء
Reflect
الأساليب الساكنة الـ14 كلها
الأخطاء
الكائن
التغطية
Error، TypeError، RangeError، ReferenceError، SyntaxError، URIError، EvalError
كاملة
AggregateError
كاملة
SuppressedError (الإدارة الصريحة للموارد، المرحلة 3)
كاملة
التواريخ والوقت
الكائن
التغطية
Date
كاملة
Temporal (المرحلة 3)
كاملة — Now، Instant، PlainDate، PlainTime، PlainDateTime، PlainYearMonth، PlainMonthDay، ZonedDateTime، Duration، TimeZone، Calendar (بما فيها العبرية والصينية والدانغية والإثيوبية، إلخ.)
التدويل
الكائن
التغطية
Intl.Locale، Intl.Collator، Intl.DateTimeFormat، Intl.NumberFormat، Intl.PluralRules، Intl.RelativeTimeFormat، Intl.ListFormat، Intl.DisplayNames، Intl.Segmenter
كاملة (تفوض إلى امتداد intl الخاص بـ PHP عند توفره)
إدارة الموارد
الكائن
التغطية
DisposableStack، AsyncDisposableStack (المرحلة 3)
كاملة
Symbol.dispose، Symbol.asyncDispose
كاملة
تصريحات using / await using
كاملة
أخرى
الكائن
التغطية
RegExp (بما في ذلك تدوين المجموعة /v، والالتقاطات المسماة، والنظر حول الموضع، والأعلام اللزجة/العامة)
كاملة
مساعدات Iterator (المرحلة 3) — map، filter، take، drop، flatMap، reduce، toArray، forEach، some، every، find
كاملة
ShadowRealm (المرحلة 3)
كاملة
globalThis
✅
إلى جانب ECMAScript الخالصة، يوفر Phasis عدة حزم متدرجة من واجهات Web API التي تتحقق منها مكتبات JS الواقعية مسبقًا. راجع واجهات Web API للاطلاع على النطاق الكامل والتوافق حسب المجال.
الحزمة
المتغيرات العامة
WPT
منصة الويب
URL، URLSearchParams، URLPattern، TextEncoder، TextDecoder، atob، btoa، structuredClone، performance، console، setTimeout / setInterval / queueMicrotask، reportError، self (اسم بديل لـ globalThis)، DOMException
100 %
Fetch
fetch، Request، Response، Headers، المزيج Body، AbortController، AbortSignal، Blob، File، FormData، EventTarget، Event، تدفقات WHATWG كاملة (ReadableStream، WritableStream، TransformStream، واستراتيجيات الانتظار، BYOB)، CompressionStream / DecompressionStream (zlib + brotli اختياري عبر ext-brotli)، navigator
100 %¹
Crypto
crypto.getRandomValues، crypto.randomUUID، SubtleCrypto كامل (الملخص، HMAC، AES-GCM/CBC/CTR، RSA-OAEP/PSS/PKCS1، ECDSA P-256/384/521، ECDH، HKDF، PBKDF2)
100 %
WebSocket
WebSocket (المُنشئ + برنامج ترميز الإطارات RFC 6455، مع نقل قابل للاستبدال عبر setWebSocketTransport)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (مبنية فوق نقل Fetch، لذا تنطبق خطافات السياسات)
100 %
حلقة الأحداث
setTimeout، setInterval، clearTimeout، clearInterval، queueMicrotask، AsyncContext (المرحلة 3)
لا ينطبق (اختُبر بالمقارنة مع المرجع)
¹ باستثناء الاختبارات الفرعية المسموح بها في تجهيزات الضغط: حالات brotli التي تتطلب ext-brotli، والحالات التي تمرر مدخلًا مدعومًا بـ SharedArrayBuffer (EXPECTED_FAILURES في tests/Wpt/WptTest.php).
تجتاز جميع اختبارات منصة الويب المستوردة الأخرى — راجع واجهات Web API للاطلاع على تفصيل التوافق.
ما لم يُنفذ بعد
دلالات SharedArrayBuffer للعاملين خارج نطاق الوكيل الواحد — يتطلب الإشعار الذري متعدد الخيوط عبر خيوط نظام التشغيل الفعلية pcntl وليس ضمن خارطة الطريق. تعمل العمليات الذرية للوكيل الواحد.Intl.Segmenter مع مجموعات الحروف التي تتطلب ICU 76+ — يعتمد ذلك على إصدار امتداد intl في PHP المضيف. الإصدارات
يتبع Phasis نظام الإصدارات الدلالي semver. ويتتبع خط الإصدارات مسودات مواصفات ECMAScript:
إصدار Phasis
هدف المواصفات
مقترحات المرحلة 3
0.x
ES2024
المزيّنات، Temporal، الإدارة الصريحة للموارد، مساعدات المكررات، أساليب المجموعات
يتوقف إصدار 1.0 على تنفيذ كل مقترح من المرحلة 4 في مسودة ES2025 وعلى استقرار دلالات تفريغ Promise.