Phasis орієнтується на поточну специфікацію ECMAScript (ES2024+) і відстежує пропозиції TC39 зі Stage 3 і вище. На цій сторінці наведено зрозумілий для читача перелік того, що фактично постачається.
Мова
Можливість
Статус
Лексичні оголошення (let, const) з TDZ
✅
Область видимості блока, функції та модуля
✅
Стрілкові функції (з лексичним this)
✅
Параметри за замовчуванням, rest-параметри, spread
✅
Деструктуризація (масивів, об’єктів, вкладена, значення за замовчуванням, rest)
✅
Шаблонні рядки, шаблонні рядки з тегами
✅
Обчислювані назви властивостей
✅
Скорочений синтаксис властивостей і методів
✅
Класи — конструктори, методи, гетери/сетери, статичні члени
✅
Поля класів (публічні, приватні, статичні)
✅
Приватні методи й аксесори
✅
super у методах і конструкторах
✅
Декоратори (Stage 3)
✅
Блоки статичної ініціалізації
✅
Необов’язковий ланцюжок (?.), об’єднання з nullish-значенням (??)
✅
Оператори логічного присвоєння (&&=, ||=, ??=)
✅
Роздільники в числах (1_000_000)
✅
Літерали BigInt (123n) та оператори
✅
Асинхронні функції, асинхронні генератори, await верхнього рівня
✅
Генератори (синхронні й асинхронні)
✅
for…of, for…in, for await…of
✅
Ітератори та ітеровані об’єкти (Symbol.iterator)
✅
Примітиви Symbol і загальновідомі символи
✅
Модулі ES (import / export, динамічний import())
✅
import.meta
✅
import attributes (Stage 3)
✅
Строгий режим і застарілі можливості Annex B
✅
Регулярні вирази (/u, /v, /d, іменовані групи, lookbehind)
✅
Автоматична вставка крапки з комою (ASI)
✅
Граматика hashbang (#!/usr/bin/env phasis)
✅
Коректні хвостові виклики у строгому режимі (ES2015, передбачені специфікацією)
Окрім самого ECMAScript, Phasis постачає кілька рівнів наборів Web API, наявність яких реальні бібліотеки JS попередньо перевіряють. Повний перелік можливостей і відповідність у кожній області див. у розділі Web API.
¹ Не враховано дозволені підтести у тестових наборах стиснення: випадки brotli, яким потрібен ext-brotli, і випадки, де передаються дані SharedArrayBuffer, (EXPECTED_FAILURES у tests/Wpt/WptTest.php).
Усі інші імпортовані Web Platform Tests проходять — таблицю відповідності див. у розділі Web API.
Що ще не реалізовано
Семантика SharedArrayBuffer для робочих потоків за межами одного агента — атомарне сповіщення між кількома потоками ОС потребує pcntl і не входить до планів. Атомарні операції в межах одного агента працюють.
Intl.Segmenter із кластерами графем, яким потрібен ICU 76+ — залежить від версії розширення intl хоста PHP.
Версіонування
Phasis дотримується semver. Лінійка версій відповідає чернеткам специфікації ECMAScript:
Версія Phasis
Цільова специфікація
Пропозиції Stage 3
0.x
ES2024
декоратори, Temporal, явне керування ресурсами, допоміжні засоби ітераторів, методи множин
Перехід до 1.0 залежить від реалізації кожної пропозиції Stage 4 із чернетки ES2025 і стабільної семантики спорожнення черги Promise.