Maison >interface Web >js tutoriel >Présentation de notre SDK JavaScript de nouvelle génération

Présentation de notre SDK JavaScript de nouvelle génération

Patricia Arquette
Patricia Arquetteoriginal
2024-12-05 02:21:08525parcourir

Introducing our Next-Generation JavaScript SDK

Par : Till Schneidereit

Aujourd'hui, nous sommes heureux d'annoncer la disponibilité de notre tout nouveau SDK JavaScript. Ce SDK est une réécriture complète de notre précédent SDK JavaScript, avec une compatibilité d'écosystème, une conformité aux normes, une robustesse et de nouvelles fonctionnalités clés considérablement améliorées.

Cette version nous met également sur la voie d'améliorations significatives des performances et d'améliorations continues de la compatibilité avec les applications JavaScript existantes.

Dans le même temps, nous conservons un degré élevé de compatibilité avec le SDK précédent, la mise à niveau devrait donc être simple pour la plupart des utilisateurs.

Plongeons plus en détail sur les nouveautés et les différences de cette version.

S'appuyant sur les bases solides de SpiderMonkey, StarlingMonkey et ComponentizeJS

Là où le SDK précédent était construit sur le moteur JavaScript QuickJS et le runtime Javy, le nouveau SDK est construit sur le moteur SpiderMonkey du navigateur Firefox, le runtime StarlingMonkey de Bytecode Alliance et le générateur de liaisons ComponentizeJS WIT.

Ensemble, ces projets constituent une base fantastique pour notre SDK :

  • SpiderMonkey est le moteur JavaScript qui alimente le navigateur Firefox. Il est en développement depuis plus de 20 ans, est utilisé par des millions d’utilisateurs chaque jour et peut revendiquer un degré de maturité que seuls les grands moteurs de navigateur peuvent réellement atteindre.
  • StarlingMonkey est un runtime JavaScript que nous avons construit avec nos amis de Fastly et avons contribué à la Bytecode Alliance. Il est construit sur SpiderMonkey de manière hautement modulaire, ce qui le rend facile à configurer selon les besoins de notre cas d'utilisation. Surtout, il s'accompagne d'une implémentation d'API Web clés qui améliorent considérablement la compatibilité avec l'écosystème Web, comme l'API fetch pour gérer les requêtes HTTP sortantes, des éléments clés de la spécification Service Workers pour gérer les requêtes entrantes, le traitement en streaming des corps de requête et de réponse à l'aide de l'API Streams du Web streamssetTimeout et setInterval.
  • **ComponentizeJS **est un outil qui permet d'utiliser des interfaces externes définies dans le langage de description d'interface WIT en JavaScript. Cela facilite l'utilisation non seulement des interfaces fournies par Spin en plus de ce qui est inclus dans WASI, mais également des fonctionnalités implémentées dans d'autres composants WebAssembly, y compris ceux écrits dans d'autres langages tels que Rust, Go, Python ou C/C.

Changement radical sous le capot, petits ajustements en surface

Comme décrit ci-dessus, la nouvelle implémentation de notre support JS pourrait difficilement être plus différente de l'ancienne. La bonne nouvelle est que, grâce au fait que JavaScript possède une spécification exceptionnellement robuste, nous pouvons faire tout cela sans risquer de casser subtilement le code existant. Bien que le nouveau SDK soit livré avec une API légèrement modifiée qui nécessite des modifications tout aussi légères lors de la mise à niveau de projets existants, le remplacement complet de la plate-forme sous-jacente n'a autrement aucun impact sur la compatibilité.

À partir de là, ils peuvent alors commencer à profiter des nouvelles fonctionnalités apportées par le nouveau SDK. Nous avons notamment modifié l'API pour faciliter l'intégration de corps HTTP en streaming sans avoir à réécrire complètement le code existant.

Nouvelles API basées sur des standards

Nous avons implémenté la prise en charge (une version légèrement modifiée) des API existantes en plus des normes de spécification de l'API fetch et des Service Workers. Les développeurs peuvent choisir de travailler directement avec ces normes s'ils le souhaitent, ce qui leur confère une compatibilité considérablement améliorée avec l'écosystème Web et JS plus large.

Les standards aident également d'une manière complètement différente : puisque tout le support HTTP est désormais construit à l'aide de wasi-http, les applications créées avec le nouveau SDK qui n'utilisent pas les API spécifiques à Spin que nous prenons également en charge peuvent s'exécuter dans n'importe quel environnement prenant en charge wasi-http, tel que Wasmtime et Node.js (via JCO).

Juste le début

Avec cette version, nous nous sommes concentrés sur la modification de la plate-forme sous-jacente pour notre prise en charge JavaScript d'une manière compatible, tout en bénéficiant déjà de la prise en charge des normes Web modernes, de la composabilité avec d'autres composants WebAssembly et d'une base plus robuste et plus mature pour l'avenir. développement.

À l’avenir, nous constaterons des améliorations rapides des performances, de la compatibilité et de nouvelles fonctionnalités. En guise d'aperçu, certains des développements les plus passionnants en cours sont :

  • Améliorations des performances : l'équipe Fastly a travaillé sur des améliorations substantielles des performances pour l'exécution de JavaScript dans WebAssembly. Une première itération de ce travail vient d'être intégrée à StarlingMonkey et rend déjà l'exécution plusieurs fois plus rapide, en fonction de la charge de travail exacte. Cette intégration a atterri hier et n'a donc pas encore été intégrée à notre SDK JS, mais le sera bientôt.
  • Amélioration de la compatibilité avec l'écosystème Web et JavaScript : nous sommes sur le point d'apporter une amélioration clé à StarlingMonkey : la possibilité d'implémenter des parties du runtime lui-même et des API Web qu'il fournit, dans Rust au lieu de C . Cela permettra de suivre beaucoup plus facilement les derniers développements de l'écosystème Web et de fournir une implémentation plus complète et plus compatible des API Web qui sont cruciales pour la compatibilité avec les applications JavaScript existantes. Tous les codes JS n'utilisent pas d'API basées sur les normes (Web) : de nombreux codes utilisent les API Node.js. Nous travaillons à fournir une couche de compatibilité pour ces API, afin que les développeurs puissent les utiliser dans leurs applications Spin.
  • Prise en charge de davantage de types de déclencheurs : actuellement, le nouveau SDK JavaScript ne prend en charge que les déclencheurs HTTP. Nous travaillons à l'ajout de la prise en charge d'un plus grand nombre de types de déclencheurs, tels que les déclencheurs Cron et Redis. ## Restez en contact Nous sommes ravis de pouvoir partager ce nouveau SDK avec vous, et nous attendons avec impatience vos commentaires et contributions alors que nous continuons à l’améliorer. Veuillez rejoindre le chat sur le serveur Fermyon Discord ou nos réunions de projet hebdomadaires, et suivez-nous sur X (anciennement Twitter) @fermyontech et @spinframework !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn