İçeriğe geç

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 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 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.