
# Belirtim kapsamı

Phasis, mevcut ECMAScript belirtimini (ES2024+) hedefler ve TC39'ün Aşama 3 ve üzerindeki önerilerini takip eder. Bu sayfa, gerçekte sunulan özelliklerin insanlar tarafından okunabilir dizinidir.

## Dil

| Özellik | Durum |
|---|:---:|
| Sözcüksel bildirimler (`let`, `const`) ve TDZ | ✅ |
| Blok kapsamı, işlev kapsamı, modül kapsamı | ✅ |
| Ok işlevleri (sözcüksel `this` ile) | ✅ |
| Varsayılan parametreler, kalan parametreler, yayma | ✅ |
| Parçalama (dizi, nesne, iç içe, varsayılanlar, kalan) | ✅ |
| Şablon dizeleri, etiketli şablonlar | ✅ |
| Hesaplanan özellik adları | ✅ |
| Kısa özellikler ve yöntemler | ✅ |
| Sınıflar — oluşturucular, yöntemler, alıcılar/ayarlayıcılar, statik üyeler | ✅ |
| Sınıf alanları (genel, özel, statik) | ✅ |
| Özel yöntemler ve erişimciler | ✅ |
| `super` yöntemlerde ve oluşturucularda | ✅ |
| Dekoratörler (Aşama 3) | ✅ |
| Statik başlatıcı blokları | ✅ |
| İsteğe bağlı zincirleme (`?.`), boş değer birleştirme (`??`) | ✅ |
| Mantıksal atama işleçleri (`&&=`, `\|\|=`, `??=`) | ✅ |
| Sayısal ayraçlar (`1_000_000`) | ✅ |
| BigInt sabitleri (`123n`) ve işleçler | ✅ |
| Asenkron işlevler, asenkron üreteçler, en üst düzeyde await | ✅ |
| Üreteçler (senkron ve asenkron) | ✅ |
| `for…of`, `for…in`, `for await…of` | ✅ |
| Yineleyiciler ve yinelenebilirler (Symbol.iterator) | ✅ |
| Symbol ilkelleri ve bilinen semboller | ✅ |
| ES Modülleri (`import` / `export`, dinamik `import()`) | ✅ |
| `import.meta` | ✅ |
| `import attributes` (Aşama 3) | ✅ |
| Katı mod + Ek B eski davranışları | ✅ |
| Düzenli ifadeler (`/u`, `/v`, `/d`, adlandırılmış gruplar, geriye bakış) | ✅ |
| Otomatik noktalı virgül ekleme (ASI) | ✅ |
| Hashbang dilbilgisi (`#!/usr/bin/env phasis`) | ✅ |
| Katı modda doğru kuyruk çağrıları (ES2015, belirtimin gerektirdiği) | ✅ |

## Standart kütüphane

### Temel

| Nesne | Kapsam |
|---|---|
| `Object` | tam — `keys`, `values`, `entries`, `assign`, `create`, `freeze`, `seal`, `getOwnPropertyDescriptor(s)`, `setPrototypeOf`, `getOwnPropertyNames`, `getOwnPropertySymbols`, `hasOwn`, `groupBy`, `fromEntries`, vb. |
| `Array` | tam — `at`, `flatMap`, `flat`, `findLast`, `findLastIndex`, `toReversed`, `toSorted`, `toSpliced`, `with`, `group`, `groupToMap` dahil tüm prototip yöntemleri |
| `String` | tam — `at`, `codePointAt`, `match`, `matchAll`, `replaceAll`, `padStart`, `padEnd`, `trimStart`, `trimEnd`, `isWellFormed`, `toWellFormed` |
| `Number` | tam — `isFinite`, `isInteger`, `isNaN`, `isSafeInteger`, `EPSILON`, `MAX_SAFE_INTEGER`, vb. |
| `BigInt` | tam — bcmath aracılığıyla keyfi hassasiyet |
| `Boolean` | tam |
| `Math` | tam — her yöntem; NaN / Infinity / -0 için her özel durum |
| `JSON` | tam — `parse`, `stringify`, özel değiştiriciler, canlandırıcı, girinti |
| `Symbol` | tam — `for`, `keyFor`, bilinen tüm semboller, `Symbol.toPrimitive` semantiği |
| `Function` | tam — `call`, `apply`, `bind`, `length`, `name`, `prototype` |

### Koleksiyonlar

| Nesne | Kapsam |
|---|---|
| `Map` | tam — `groupBy` ve canlı yineleme dahil |
| `Set` | tam — `intersection`, `union`, `difference`, `symmetricDifference`, `isSubsetOf`, `isSupersetOf`, `isDisjointFrom` dahil |
| `WeakMap`, `WeakSet`, `WeakRef`, `FinalizationRegistry` | tam |

### Asenkron

| Nesne | Kapsam |
|---|---|
| `Promise` | tam — `all`, `race`, `any`, `allSettled`, `withResolvers`, asenkron yineleme |
| `AsyncIterator`, `AsyncGenerator` | tam |
| Mikro görev zamanlama | ✅ |

### İkili veri

| Nesne | Kapsam |
|---|---|
| `ArrayBuffer`, `SharedArrayBuffer` | tam |
| `DataView` | tam — `getBigInt64`, `setBigInt64` vb. |
| `Int8Array`, `Uint8Array`, `Uint8ClampedArray`, `Int16Array`, `Uint16Array`, `Int32Array`, `Uint32Array`, `BigInt64Array`, `BigUint64Array`, `Float16Array`, `Float32Array`, `Float64Array` | tam |
| `Atomics` — `add`, `sub`, `and`, `or`, `xor`, `compareExchange`, `exchange`, `isLockFree`, `load`, `notify`, `pause`, `store`, `wait`, `waitAsync` | yalnızca tek aracı için tam destek |

### Yansıma ve proxy'ler

| Nesne | Kapsam |
|---|---|
| `Proxy` | 13 tuzağın tamamı, iptal edilebilir |
| `Reflect` | 14 statik yöntemin tamamı |

### Hatalar

| Nesne | Kapsam |
|---|---|
| `Error`, `TypeError`, `RangeError`, `ReferenceError`, `SyntaxError`, `URIError`, `EvalError` | tamamı |
| `AggregateError` | tamamı |
| `SuppressedError` (Aşama 3 açık kaynak yönetimi) | tamamı |

### Tarihler ve saat

| Nesne | Kapsam |
|---|---|
| `Date` | tamamı |
| `Temporal` (Aşama 3) | tamamı — `Now`, `Instant`, `PlainDate`, `PlainTime`, `PlainDateTime`, `PlainYearMonth`, `PlainMonthDay`, `ZonedDateTime`, `Duration`, `TimeZone`, `Calendar` (İbranice, Çince, Dangi, Etiyopyaca vb. dahil) |

### Uluslararasılaştırma

| Nesne | Kapsam |
|---|---|
| `Intl.Locale`, `Intl.Collator`, `Intl.DateTimeFormat`, `Intl.NumberFormat`, `Intl.PluralRules`, `Intl.RelativeTimeFormat`, `Intl.ListFormat`, `Intl.DisplayNames`, `Intl.Segmenter` | mevcut olduğunda PHP'ın `intl` uzantısına devrederek tamamı |

### Kaynak yönetimi

| Nesne | Kapsam |
|---|---|
| `DisposableStack`, `AsyncDisposableStack` (Aşama 3) | tamamı |
| `Symbol.dispose`, `Symbol.asyncDispose` | tamamı |
| `using` / `await using` bildirimleri | tamamı |

### Diğer

| Nesne | Kapsam |
|---|---|
| `RegExp` (`/v` küme gösterimi, adlandırılmış yakalamalar, ileri/geri bakış, sticky/global bayraklar dahil) | tamamı |
| `Iterator` yardımcıları (Aşama 3) — `map`, `filter`, `take`, `drop`, `flatMap`, `reduce`, `toArray`, `forEach`, `some`, `every`, `find` | tamamı |
| `ShadowRealm` (Aşama 3) | tamamı |
| `globalThis` | ✅ |

## Web Platformu API'leri (WHATWG / W3C, TC39 değil)

Saf ECMAScript'in ötesinde Phasis, gerçek dünyadaki JS kütüphanelerinin ön denetimden geçirdiği çeşitli katmanlı Web API paketleri sunar. Yüzeyin tamamı ve alan bazında uygunluk bilgileri için [Web API'leri](https://phasis.inline0.dev/tr/docs/compatibility/web-apis) bölümüne bakın.

| Paket | Global'ler | WPT |
|---|---|---|
| **Web Platformu** | `URL`, `URLSearchParams`, `URLPattern`, `TextEncoder`, `TextDecoder`, `atob`, `btoa`, `structuredClone`, `performance`, `console`, `setTimeout` / `setInterval` / `queueMicrotask`, `reportError`, `self` (`globalThis` takma adı), `DOMException` | 100 % |
| **Fetch** | `fetch`, `Request`, `Response`, `Headers`, `Body` karışımı, `AbortController`, `AbortSignal`, `Blob`, `File`, `FormData`, `EventTarget`, `Event`, WHATWG Streams'in tamamı (`ReadableStream`, `WritableStream`, `TransformStream`, kuyruk stratejileri, BYOB), `CompressionStream` / `DecompressionStream` (zlib + `ext-brotli` ile isteğe bağlı brotli), `navigator` | 100 %¹ |
| **Crypto** | `crypto.getRandomValues`, `crypto.randomUUID`, `SubtleCrypto`'ın tamamı (özet, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2) | 100 % |
| **WebSocket** | `WebSocket` (kurucu + RFC 6455 çerçeve kodlayıcısı, `setWebSocketTransport` üzerinden değiştirilebilir taşıma) | 100 % |
| **XHR** | `XMLHttpRequest` + `XMLHttpRequestUpload` + `ProgressEvent` (fetch taşımasının üzerine katmanlanmıştır; bu nedenle ilke kancaları uygulanır) | 100 % |
| **Olay döngüsü** | `setTimeout`, `setInterval`, `clearTimeout`, `clearInterval`, `queueMicrotask`, `AsyncContext` (Aşama 3) | yok (oracle ile test edildi) |

¹ Sıkıştırma fikstürlerindeki izin listesine alınmış alt testler hariç: `ext-brotli` gerektiren brotli durumları ve `SharedArrayBuffer` destekli girdi kullanan durumlar (`tests/Wpt/WptTest.php` içindeki `EXPECTED_FAILURES`).

İçe aktarılan diğer tüm Web Platform Tests testleri başarılı — uygunluk dökümü için [Web API'leri](https://phasis.inline0.dev/tr/docs/compatibility/web-apis) bölümüne bakın.

## Henüz uygulanmayanlar

- **Tek bir aracı aşan SharedArrayBuffer worker semantiği** — gerçek işletim sistemi iş parçacıkları arasında çok iş parçacıklı atomik bildirim için `pcntl` gerekir ve yol haritasında değildir. Tek aracılı atomik işlemler çalışır.
- **ICU 76+ gerektiren grapheme kümelerine sahip `Intl.Segmenter`** — ana makinenin PHP'sinin `intl` uzantı sürümüne bağlıdır.

## Sürümleme

Phasis semver kurallarını izler. Sürüm hattı ECMAScript spesifikasyon taslaklarını takip eder:

| Phasis sürümü | Spesifikasyon hedefi | Aşama 3 önerileri |
|---|---|---|
| 0.x | ES2024 | dekoratörler, Temporal, açık kaynak yönetimi, yineleyici yardımcıları, küme yöntemleri |

1.0'a geçiş için, ES2025 taslağındaki her Aşama 4 önerisinin uygulanmış olması ve Promise boşaltma semantiğinin kararlı olması gerekir.
