Compatibilité
Phasis est vérifié à l’aide de trois références indépendantes :
- test262 — la suite officielle de conformité ECMAScript de TC39. 100 % de la révision épinglée dans le dépôt.
- Web Platform Tests — la suite officielle WHATWG / W3C pour les API Web hors ECMAScript (fetch, XHR, WebSocket, Streams, Headers, Blob, encodage, URL, structured-clone, abort, hr-time, atob, crypto). 100 % sur le corpus importé.
- Bibliothèques populaires — 204 packages npm largement utilisés (acorn, lodash, zod, ramda, immer, redux, date-fns, marked, fuse.js, semver, validator, …) produisent un résultat identique octet par octet à Node.js.
Comparaison avec d’autres moteurs
| Moteur | test262 | Remarques |
|---|---|---|
| Phasis | 100 % | PHP pur. Cible ES2024+. |
| V8 (Node, Chrome) | 99.8 % | Moteur de référence en C++. |
| SpiderMonkey (Firefox) | 99.6 % | Moteur de référence en C++. |
| JavaScriptCore (Safari) | 99.4 % | Moteur de référence en C++. |
| QuickJS | ~97 % | Moteur léger intégrable écrit en C. |
| Hermes (React natif) | ~95 % | Moteur intégrable optimisé pour les appareils mobiles. |
Chiffres tirés de test262.fyi. Phasis se situe parmi les meilleurs moteurs de navigateur de production.
Pages
- Couverture test262 — tests exécutés, fonctionnement de la suite et importance du chiffre de 100 %.
- API Web (WPT) — Web Platform Pack et Fetch Pack : URL, encodage, atob/btoa, structuredClone, performance, Headers, Blob, AbortSignal, EventTarget, Streams, ainsi que crypto, WebSocket et XMLHttpRequest.
- Flux — norme complète WHATWG Streams : ReadableStream, WritableStream, TransformStream, BYOB, tee, pipeTo/pipeThrough, stratégies de mise en file, itération asynchrone.
- Packages populaires — égalité octet par octet vérifiée par CI avec Node.js pour 204 packages npm couvrant l’analyse syntaxique, les modèles, la validation, les dates et heures, les mathématiques, le hachage, la recherche et les différences, les couleurs, la gestion URL et bien plus.
- Fonctionnalités de la spécification — chaque fonctionnalité intégrée, syntaxique et objet de bibliothèque standard fourni par Phasis.
- Limites connues — domaines où Phasis diverge volontairement de V8 : plafond de performances, concurrence multi-agent, Wasm et API Web réservées au navigateur.
Méthode de mesure
- test262 —
bin/test262exécute la suite en local. La matrice complète s’exécute dans le workflowcompat-matrix.yml, lancé manuellement plutôt qu’à chaque push ; une exécution réussie enregistre son instantané dansCOMPAT.md, avec la date de création et le commit correspondant. La révision de la suite est celle épinglée par le sous-module gittest262. - Web Platform Tests —
bin/wptexécute les tests importés. Le workflowwpt.ymlles lance à chaque push versmainet pour les demandes de fusion qui modifientsrc/, les tests ou les fichiers Composer. - Bibliothèques populaires —
composer testexécute PHPUnit, notamment la suite d’égalité octet par octet des bibliothèques populaires soustests/Popular/. Le workflowpopular.ymll’exécute avec le même filtre de chemins et régénère aussi chaque référence sous Node réel, afin de détecter toute référence obsolète lors de la mise à jour d’une bibliothèque intégrée.
Une régression WPT ou dans un package populaire fait échouer la demande de fusion qui l’introduit. Une régression test262 apparaît à la prochaine exécution de la matrice.