Le projet AssemblyScript compile un sous-ensemble de TypeScript en WebAssembly
il est open source et disponible sous licence Apache 2.0
AssemblyScript est un projet qui vise à créer un pont entre WebAssembly et le surensemble JavaScript typé de Microsoft, TypeScript. WebAssembly est un langage de programmation binaire de bas niveau pour le développement d’applications dans les navigateurs Web. Introduit en 2015, il est actuellement standardisé dans le cadre du W3C. WebAssembly est destiné à dépasser les performances de JavaScript en matière d'exécution d'opérations à forte intensité de calcul dans un navigateur, avec un format de code binaire portable conçu pour rendre les applications Web plus rapides.
D’après la page GitHub du projet, AssemblyScript définit un sous-ensemble de TypeScript qu'il compile en WebAssembly. Il vise à fournir à toute personne avec un background en TypeScript et les API JavaScript standard un moyen confortable de compiler en WebAssembly, éliminant la nécessité de basculer entre les langages ou d'en apprendre d'autres uniquement à cette fin.
Ce que fait AssemblyScript sous le capot, c'est qu'il « relie » l'API du compilateur de TypeScript au backend de Binaryen (un compilateur et toolchain pour WebAssembly, écrit en C ++.) Il faut également noter que le compilateur lui-même est écrit et basé sur TypeScript et aucune dépendance binaire n'est requise pour commencer à l'utiliser. En outre, « chaque programme AssemblyScript est syntaxiquement valide en TypeScript, mais pas nécessairement sémantiquement », est-il précisé sur la page GitHub du projet.
Plutôt que de procéder à une réimplémentation aussi proche que possible de TypeScript au détriment de la performance, AssemblyScript tente, « aussi raisonnable que possible », de supporter ses fonctionnalités, en laissant intentionnellement de côté certaines constructions dynamiques. Il faut noter que :
- tous les types doivent être annotés pour éviter les conversions implicites de type indésirables ;
- les paramètres optionnels de fonction nécessitent une expression d'initialisation ;
- les types d'union (sauf ClassType | null représentant un nullable), any et undefined ne sont pas pris en charge par conception ;
- le résultat des expressions logiques &&/|| est toujours bool.
Le développement d’AssemblyScript est actuellement en phase bêta comme l'indique son développeur principal, Daniel Wirtz. Le projet est disponible sous licence Apache, version 2.0. Vous pouvez également déjà tester AssemblyScript directement dans votre navigateur.
Source : GitHub
Et vous ?
Que pensez-vous de l’utilité de projet ?
L'avez-vous déjà testé ? Qu'en dites-vous ?
Partager