Un projet dénommé AssemblyScript établit une passerelle entre WebAssembly, le format de code binaire portable qui permet de développer des applications Web plus rapides et TypeScript, le langage de programmation open source de Microsoft, sur-ensemble de JavaScript, destiné à améliorer et à sécuriser la production de code JavaScript.

AssemblyScript, lui-même un sous-ensemble de TypeScript, offre aux développeurs ayant des compétences en TypeScript et en API JavaScript standard une solution pour compiler vers WebAssembly. Comme l’indique Daniel Wirtz, son principal développeur, le projet est actuellement en bêta. « Avec AssemblyScript, je souhaite créer quelque chose de simple, un équivalent au nodge package manager (npm) de façon à compiler sur WebAssembly sans avoir à installer et à configurer des chaînes d'outils complexes », a-t-il déclaré.

Un compilateur BInaryen 

Le projet reconnecte en arrière-plan l'API du compilateur de TypeScript au compilateur BInaryen, qui est capable de produire des binaires WebAssembly. Au lieu d’essayer de réimplementer TypeScript au plus près, au détriment de la performance, AssemblyScript essaye de reproduire aussi bien que possible des fonctionnalités sans le support de certains modèles dynamiques. Les programmes AssemblyScript sont valides sur le plan de la syntaxe, mais pas forcément sur le plan sémantique.

AssemblyScript doit répondre aussi à quelques exigences particulières. Par exemple, les types doivent être annotés pour éviter des conversions implicites indésirables. De plus, les paramètres fonctionnels optionnels nécessitent une expression d'initialisation. Les variables de type union, sauf les types de classe | null, any et undefined, ne sont pas pris en charge par nature.

Un défi pour les développeurs 

La documentation qualifie le projet AssemblyScript, essentiellement développé par Daniel Wirtz et des contributeurs occasionnels, de nouveau et d’ambitieux. Elle prévient aussi qu’il faut s’attendre à des bugs et à des modifications. Daniel Wirtz compte étendre le support de TypeScript, mais il attend plus de fonctionnalités dans WebAssembly pour la collecte des ordures et la gestion des exceptions. « Le but ultime est de pouvoir compiler directement depuis le compilateur AssemblyScript vers WebAssembly dans un navigateur, sans passer par des solutions de contournement compliquées ».

Daniel Wirtz est satisfait du format binaire de WebAssembly. Mais, selon lui, il représente un défi pour les développeurs dans la mesure où le support de plusieurs langages demande des compétences dans les différents langages et les différents environnements.