Phasis е насочен към текущата спецификация на ECMAScript (ES2024+) и следи предложенията на TC39 със статус Stage 3 и по-висок. Тази страница е разбираем за хората индекс на вече включеното.
Език
Възможност
Статус
Лексикални декларации (let, const) с TDZ
✅
Област на видимост на блок, функция и модул
✅
Функции със стрелка (с лексикален this)
✅
Параметри по подразбиране, остатъчни параметри, разгръщане
✅
Деструктуриране (масив, обект, вложени структури, стойности по подразбиране, остатъчни стойности)
✅
Шаблонни литерали, шаблонни литерали с таг
✅
Изчислявани имена на свойства
✅
Съкратен запис на свойства и методи
✅
Класове — конструктори, методи, гетъри/сетъри, статични елементи
✅
Полета на класове (публични, частни, статични)
✅
Частни методи и аксесори
✅
super в методи и конструктори
✅
Декоратори (Stage 3)
✅
Статични блокове за инициализация
✅
Незадължително верижно извикване (?.), обединяване при null или липсваща стойност (??)
✅
Логически оператори за присвояване (&&=, ||=, ??=)
✅
Разделители в числата (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, именувани групи, ретроспективно търсене)
✅
Автоматично вмъкване на точка и запетая (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
Освен чистия ECMAScript, Phasis предоставя няколко многослойни пакета от API за уеб, които реалните библиотеки JS предварително проверяват за съвместимост. Вижте API за уеб за пълния обхват и съответствието във всяка област.
¹ Без подтестовете от тестовете за компресия, включени в списъка с изключения: случаите с brotli, за които е нужен ext-brotli, и случаите с вход, поддържан от SharedArrayBuffer (EXPECTED_FAILURES в tests/Wpt/WptTest.php).
Всички останали импортирани тестове на уеб платформата минават — вижте API за уеб за разбивка на съответствието.
Какво все още не е реализирано
Семантика на SharedArrayBuffer за работници отвъд един агент — атомарните уведомления между реални нишки на операционната система изискват pcntl и не са в плана. Атомарните операции в рамките на един агент работят.
Intl.Segmenter с клъстери от графеми, изискващи ICU 76+ — зависи от версията на разширението intl на PHP на хоста.
Версии
Phasis следва семантичното версиониране. Номерът на версията следва черновите на спецификацията ECMAScript:
Версия на Phasis
Целева спецификация
Предложения Stage 3
0.x
ES2024
декоратори, Temporal, изрично управление на ресурсите, помощни функции за итератори, методи за множества
Преминаването към 1.0 зависи от реализирането на всяко предложение Stage 4 в черновата на ES2025 и от стабилна семантика за изчерпване на Promise.