Siirry sisältöön

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 ✅

Verkkoalustan API:t (WHATWG / W3C, eivät TC39:n)

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.