Phasis jest zgodny z aktualną specyfikacją ECMAScript (ES2024+) i uwzględnia propozycje TC39 na etapie Stage 3 i wyższym. Ta strona to czytelny dla człowieka indeks tego, co faktycznie zostało dostarczone.
Język
Funkcja
Status
Deklaracje leksykalne (let, const) z TDZ
✅
Zakres blokowy, zakres funkcji, zakres modułu
✅
Funkcje strzałkowe (z leksykalnym this)
✅
Parametry domyślne, parametry rest, rozproszenie
✅
Destrukturyzacja (tablic, obiektów, zagnieżdżona, z wartościami domyślnymi i rest)
✅
Literały szablonowe, szablony z tagami
✅
Obliczane nazwy właściwości
✅
Skrócone właściwości i metody
✅
Klasy — konstruktory, metody, gettery/settery, elementy statyczne
✅
Pola klas (publiczne, prywatne, statyczne)
✅
Metody prywatne i akcesory
✅
super w metodach i konstruktorach
✅
Dekoratory (Stage 3)
✅
Bloki inicjalizujące elementy statyczne
✅
Łańcuchowanie opcjonalne (?.), koalescencja wartości nullish (??)
✅
Operatory przypisania logicznego (&&=, ||=, ??=)
✅
Separatory numeryczne (1_000_000)
✅
Literały BigInt (123n) i operatory
✅
Funkcje asynchroniczne, generatory asynchroniczne, await na najwyższym poziomie
Interfejsy API platformy WWW (WHATWG / W3C, nie TC39)
Poza czystym ECMAScript Phasis dostarcza kilka warstwowych pakietów interfejsów API platformy WWW, które rzeczywiste biblioteki JS sprawdzają wstępnie. Pełny zakres i zgodność w poszczególnych obszarach opisano na stronie Interfejsy API platformy WWW.
¹ Z wyłączeniem dozwolonych podtestów w zestawach testowych kompresji: przypadków brotli, które wymagają ext-brotli, oraz przypadków przekazujących dane wejściowe oparte na SharedArrayBuffer (EXPECTED_FAILURES w tests/Wpt/WptTest.php).
Wszystkie pozostałe zaimportowane testy platformy WWW przechodzą — zestawienie zgodności znajdziesz na stronie Interfejsy API platformy WWW.
Jeszcze niezaimplementowane elementy
Semantyka SharedArrayBuffer wątków roboczych poza pojedynczym agentem — atomowe powiadamianie między wieloma rzeczywistymi wątkami systemu operacyjnego wymaga pcntl i nie ma go w planach. Atomiki pojedynczego agenta działają.
Intl.Segmenter z klastrami grafemów wymagającymi ICU 76+ — zależy od wersji rozszerzenia intl hosta PHP.
Wersjonowanie
Phasis stosuje semver. Linia wersji odpowiada wersjom roboczym specyfikacji ECMAScript:
Wersja Phasis
Docelowa specyfikacja
Propozycje etapu 3
0.x
ES2024
dekoratory, Temporal, jawne zarządzanie zasobami, pomocniki iteratorów, metody zbiorów
Wydanie wersji 1.0 wymaga zaimplementowania każdej propozycji etapu 4 z projektu ES2025 oraz ustabilizowania semantyki opróżniania Promise.