انتقل إلى المحتوى

نطاق المواصفات

يستهدف 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 ✅

واجهات برمجة تطبيقات منصة الويب (WHATWG / W3C، وليست TC39)

إلى جانب 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.