Määritysten kattavuus
Phasis tähtää nykyiseen ECMAScript-määritykseen (ES2024+) ja seuraa TC39-ehdotuksia vaiheesta 3 alkaen. Tällä sivulla on ihmisen luettavissa oleva hakemisto siitä, mitä on todella julkaistu.
Kieli
Ominaisuus
Tila
Leksikaaliset määritykset (let, const) ja TDZ
✅
Lohko-, funktio- ja moduulikohtainen näkyvyysalue
✅
Nuolifunktiot (leksikaalinen this)
✅
Oletusparametrit, rest-parametrit, levitys
✅
Hajautus (taulukko, olio, sisäkkäinen, oletusarvot, rest)
✅
Malliliteraalit ja tunnisteelliset malliliteraalit
✅
Lasketut ominaisuuksien nimet
✅
Lyhennetyt ominaisuudet ja metodit
✅
Luokat — konstruktorit, metodit, getterit/setterit, staattiset jäsenet
✅
Luokkakentät (julkiset, yksityiset, staattiset)
✅
Yksityiset metodit ja aksessorit
✅
super metodeissa ja konstruktoreissa
✅
Dekoraattorit (vaihe 3)
✅
Staattiset alustajalohkot
✅
Valinnainen ketjutus (?.), null-arvojen yhdistäminen (??)
✅
Loogiset sijoitusoperaattorit (&&=, ||=, ??=)
✅
Numeeriset erottimet (1_000_000)
✅
BigInt-literaalit (123n) ja operaattorit
✅
Asynkroniset funktiot ja generaattorit, ylätason await
✅
Generaattorit (synkroniset ja asynkroniset)
✅
for…of, for…in, for await…of
✅
Iteraattorit ja iteroitavat oliot (Symbol.iterator)
✅
Symbol-perustyypit ja tunnetut symbolit
✅
ES-moduulit (import / export, dynaaminen import())
✅
import.meta
✅
import attributes (vaihe 3)
✅
Tiukka tila ja Annex B:n vanhat toiminnat
✅
Säännölliset lausekkeet (/u, /v, /d, nimetyt ryhmät, taaksepäin haku)
✅
Automaattinen puolipisteiden lisäys (ASI)
✅
Hashbang-kielioppi (#!/usr/bin/env phasis)
✅
Oikeat häntärekursiokutsut tiukassa tilassa (ES2015, määrityksen vaatima)
✅
Standardikirjasto
Perusominaisuudet
Olio
Kattavuus
Object
täydellinen — keys, values, entries, assign, create, freeze, seal, getOwnPropertyDescriptor(s), setPrototypeOf, getOwnPropertyNames, getOwnPropertySymbols, hasOwn, groupBy, fromEntries jne.
Array
täydellinen — kaikki prototyyppimetodit, kuten at, flatMap, flat, findLast, findLastIndex, toReversed, toSorted, toSpliced, with, group, groupToMap
String
täydellinen — at, codePointAt, match, matchAll, replaceAll, padStart, padEnd, trimStart, trimEnd, isWellFormed, toWellFormed
Number
täydellinen — isFinite, isInteger, isNaN, isSafeInteger, EPSILON, MAX_SAFE_INTEGER jne.
BigInt
täydellinen — mielivaltaisen tarkkuuden laskenta bcmathin avulla
Boolean
täydellinen
Math
täydellinen — kaikki metodit ja kaikki NaN-, Infinity- ja -0-erikoistapaukset
JSON
täydellinen — parse, stringify, mukautetut korvaajat, palautin, sisennys
Symbol
täydellinen — for, keyFor, kaikki tunnetut symbolit, Symbol.toPrimitive
Function
täydellinen — call, apply, bind, length, name, prototype-semantiikka
Kokoelmat
Olio
Kattavuus
Map
täydellinen, mukaan lukien groupBy ja elävä iteraatio
Set
täydellinen, mukaan lukien intersection, union, difference, symmetricDifference, isSubsetOf, isSupersetOf, isDisjointFrom
WeakMap, WeakSet, WeakRef, FinalizationRegistry
täydellinen
Asynkroninen
Olio
Kattavuus
Promise
täydellinen — all, race, any, allSettled, withResolvers, asynkroninen iteraatio
AsyncIterator, AsyncGenerator
täydellinen
Mikroprosessoritehtävien ajoitus
✅
Binääridata
Olio
Kattavuus
ArrayBuffer, SharedArrayBuffer
täydellinen
DataView
täydellinen — getBigInt64, setBigInt64 jne.
Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, BigInt64Array, BigUint64Array, Float16Array, Float32Array, Float64Array
täydellinen
Atomics — add, sub, and, or, xor, compareExchange, exchange, isLockFree, load, notify, pause, store, wait, waitAsync
täydellinen (vain yhden agentin tila)
Reflektio ja proksyt
Olio
Kattavuus
Proxy
kaikki 13 ansaa, peruutettavissa
Reflect
kaikki 14 staattista metodia
Virheet
Olio
Kattavuus
Error, TypeError, RangeError, ReferenceError, SyntaxError, URIError, EvalError
täydellinen
AggregateError
täydellinen
SuppressedError (vaiheen 3 eksplisiittinen resurssienhallinta)
täydellinen
Päivämäärät ja aika
Olio
Kattavuus
Date
täydellinen
Temporal (vaihe 3)
täydellinen — Now, Instant, PlainDate, PlainTime, PlainDateTime, PlainYearMonth, PlainMonthDay, ZonedDateTime, Duration, TimeZone, Calendar (mukaan lukien heprea, kiina, dangi, etiopia jne.)
Kansainvälistäminen
Olio
Kattavuus
Intl.Locale, Intl.Collator, Intl.DateTimeFormat, Intl.NumberFormat, Intl.PluralRules, Intl.RelativeTimeFormat, Intl.ListFormat, Intl.DisplayNames, Intl.Segmenter
täydellinen (käyttää PHPn intl-laajennusta, jos se on saatavilla)
Resurssienhallinta
Olio
Kattavuus
DisposableStack, AsyncDisposableStack (vaihe 3)
täydellinen
Symbol.dispose, Symbol.asyncDispose
täydellinen
using / await using-määritykset
täydellinen
Muut
Olio
Kattavuus
RegExp (mukaan lukien /v-joukkomerkintä, nimetyt talteenotot, lookaround, sticky/global-liput)
täydellinen
Iterator-apufunktiot (vaihe 3) — map, filter, take, drop, flatMap, reduce, toArray, forEach, some, every, find
täydellinen
ShadowRealm (vaihe 3)
täydellinen
globalThis
✅
Puhtaan ECMAScriptin lisäksi Phasis sisältää useita kerroksittaisia Web API -paketteja, joiden olemassaolon oikean maailman JS-kirjastot tarkistavat ennakkoon. Katso Web API:t , jossa kuvataan koko kattavuus ja vaatimustenmukaisuus alueittain.
Paketti
Globaalit oliot
WPT
Verkkoalusta
URL, URLSearchParams, URLPattern, TextEncoder, TextDecoder, atob, btoa, structuredClone, performance, console, setTimeout / setInterval / queueMicrotask, reportError, self (kohteen globalThis alias), DOMException
100 %
Fetch
fetch, Request, Response, Headers, Body-mixin, AbortController, AbortSignal, Blob, File, FormData, EventTarget, Event, WHATWG Streams kokonaisuudessaan (ReadableStream, WritableStream, TransformStream, jonotusstrategiat, BYOB), CompressionStream / DecompressionStream (zlib + valinnainen brotli kohteen ext-brotli kautta), navigator
100 %¹
Krypto
crypto.getRandomValues, crypto.randomUUID, SubtleCrypto kokonaisuudessaan (tiiviste, HMAC, AES-GCM/CBC/CTR, RSA-OAEP/PSS/PKCS1, ECDSA P-256/384/521, ECDH, HKDF, PBKDF2)
100 %
WebSocket
WebSocket (konstruktori + RFC 6455 -kehyskoodekki, vaihdettava siirtotapa kohteen setWebSocketTransport kautta)
100 %
XHR
XMLHttpRequest + XMLHttpRequestUpload + ProgressEvent (kerrostettu fetch-siirtotavan päälle, joten käytäntökoukut toimivat)
100 %
Tapahtumasilmukka
setTimeout, setInterval, clearTimeout, clearInterval, queueMicrotask, AsyncContext (vaihe 3)
ei sovellu (oracle-testattu)
¹ Pakkaustestien sallittujen alitestien poikkeukset: brotli-tapaukset, jotka tarvitsevat kohteen ext-brotli, sekä tapaukset, joissa käytetään kohteeseen SharedArrayBuffer perustuvaa syötettä (EXPECTED_FAILURES kohteessa tests/Wpt/WptTest.php).
Kaikki muut tuodut Web Platform Tests -testit läpäistään — katso Web API:t vaatimustenmukaisuuden erittely.
Mitä ei vielä ole toteutettu
SharedArrayBuffer-työntekijöiden semantiikka yhden agentin ulkopuolella — usean säikeen atominen ilmoitus oikeiden käyttöjärjestelmäsäikeiden välillä vaatii kohteen pcntl, eikä sitä ole suunnitelmissa. Yhden agentin atomiset toiminnot toimivat.Intl.Segmenter, kun käytössä ovat ICU 76+:aa vaativat grafeemiklusterit — riippuu isäntäpalvelimen PHPn intl-laajennuksen versiosta. Versiointi
Phasis noudattaa semveriä. Versiosarja seuraa ECMAScript-määritysluonnoksia:
Phasis-versio
Määrityksen tavoite
Vaiheen 3 ehdotukset
0.x
ES2024
dekoraattorit, Temporal, eksplisiittinen resurssienhallinta, iteraattorien apufunktiot, joukkometodit
Version 1.0 julkaisu edellyttää, että kaikki ES2025-luonnoksen vaiheen 4 ehdotukset on toteutettu ja Promise-käsittelyn tyhjennyssemantiikka on vakaa.