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

يستهدف 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](https://phasis.inline0.dev/ar/docs/compatibility/web-apis) للاطلاع على النطاق الكامل والتوافق حسب المجال.

| الحزمة | المتغيرات العامة | 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](https://phasis.inline0.dev/ar/docs/compatibility/web-apis) للاطلاع على تفصيل التوافق.

## ما لم يُنفذ بعد

- **دلالات SharedArrayBuffer للعاملين** خارج نطاق الوكيل الواحد — يتطلب الإشعار الذري متعدد الخيوط عبر خيوط نظام التشغيل الفعلية `pcntl` وليس ضمن خارطة الطريق. تعمل العمليات الذرية للوكيل الواحد.
- **`Intl.Segmenter` مع مجموعات الحروف التي تتطلب ICU 76+** — يعتمد ذلك على إصدار امتداد `intl` في PHP المضيف.

## الإصدارات

يتبع Phasis نظام الإصدارات الدلالي semver. ويتتبع خط الإصدارات مسودات مواصفات ECMAScript:

| إصدار Phasis | هدف المواصفات | مقترحات المرحلة 3 |
|---|---|---|
| 0.x | ES2024 | المزيّنات، Temporal، الإدارة الصريحة للموارد، مساعدات المكررات، أساليب المجموعات |

يتوقف إصدار 1.0 على تنفيذ كل مقترح من المرحلة 4 في مسودة ES2025 وعلى استقرار دلالات تفريغ Promise.
