Le projet AssemblyScript compile un sous-ensemble de TypeScript en WebAssembly
Il est open source et disponible sous licence Apache 2.0

Le , par Michael Guilloux, Chroniqueur Actualités
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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de sbeex sbeex - Membre actif https://www.developpez.com
le 12/09/2017 à 16:53
Donc si j'ai bien compris c'est du typescript sans être complètement du typescript ?

J'ai parfois l'impression que dans le monde JS au moindre conflits lors d'une pull request sur github les gars font un "fork" du projet existant, lui trouve un autre nom, changent 2 ou 3 trucs et voilà hop un nouveau truc est sorti mais pas franchement mieux que l'ancien au final...

Avatar de Vulcania Vulcania - Membre averti https://www.developpez.com
le 12/09/2017 à 17:29
@sbeex :
ça rien à voir, c'est du typescript avec une nouvelle cible de compilation, et c'est un projet très intéressant vu que ça permet de s'échapper complètement du javascript, après ben forcément c'est pas tout à fait du typescript parce tout n'est pas encore implémenté.
Avatar de sbeex sbeex - Membre actif https://www.developpez.com
le 12/09/2017 à 18:23
Citation Envoyé par Vulcania Voir le message
ça rien à voir, c'est du typescript... ça permet de s'échapper complètement du javascript ... forcément c'est pas tout à fait du typescript
J'ai rarement lu autant de contradiction dans une seule phrase

Plus sérieusement je trouve vraiment ridicule de faire un projet a côté de typescript qui utilise du typescript. Ce projet a moins d'être supervisé par une entreprise (comme c'est le cas de typescript par exemple) ne sera jamais en phase avec typescript... Pourquoi ne pas tout simplement proposer au projet typescript d'ajouter ce compilateur et travailler main dans la main ?

Diviser pour mieux régner c'est bien mais diviser pour bâcler c'est moins bien.

PS: lâchez vos moins si ça vous fait zizir c'est pas en forkant à tout va qu'on améliore la vie des devs
Avatar de yahiko yahiko - Rédacteur/Modérateur https://www.developpez.com
le 12/09/2017 à 18:55
Pour répondre à la question précédente, l'équipe TypeScript ne prévoit pas à court ou moyen terme de supporter le WebAssembly.
D'où l'existence de ces projets "montés dans un garage".
AssemblyScript est l'un de ces projets, prometteurs, auquel je participe même si les difficultés à surmonter pour faire le pont entre le WebAssembly et TypeScript sont assez colossales.
Avatar de koyosama koyosama - Membre confirmé https://www.developpez.com
le 12/09/2017 à 22:00
Enfin un projet coherent. Si il y a moyen de se debarasser de Javascript je suis preneur.
Meme utiliser Typescript, tu dois connaitre un peu Javascript. Et puis le web assembly a ete cree pour sa. J'aimerais bien quelque chose de plus rapide que Javascript avec les syntax et la logique des languages classiques.
J'aimerais bien qu'il le fasse pour Ruby. Non Coffeescript sort du Javascript et tu sens toujours cette syntax Javascript derriere a l'utilisation, je veux un full Ruby to Web Assembly.
Avatar de Mrsky Mrsky - Membre confirmé https://www.developpez.com
le 13/09/2017 à 1:29
Web assembly n'a pas vocation a remplacer le JS coté front end mais à le soulager. En gros tu crées une sorte d'API pilotable par le JS.

Ce genre de projet a beaucoup de potentiel car pour créer un module wasm aujourd'hui tu dois le coder en C/C++, et je serais bien curieux de connaître la proportion de dev. web compétents dans l'un de ces langages.
Avatar de Vulcania Vulcania - Membre averti https://www.developpez.com
le 13/09/2017 à 8:24
Citation Envoyé par sbeex Voir le message
J'ai rarement lu autant de contradiction dans une seule phrase

Plus sérieusement je trouve vraiment ridicule de faire un projet a côté de typescript qui utilise du typescript. Ce projet a moins d'être supervisé par une entreprise (comme c'est le cas de typescript par exemple) ne sera jamais en phase avec typescript... Pourquoi ne pas tout simplement proposer au projet typescript d'ajouter ce compilateur et travailler main dans la main ?

Diviser pour mieux régner c'est bien mais diviser pour bâcler c'est moins bien.

PS: lâchez vos moins si ça vous fait zizir c'est pas en forkant à tout va qu'on améliore la vie des devs
T'es juste complètement à côté de la plaque, il y a pas de fork dans cette histoire, mais une nouvelle implémentation, d'où tes -1.
Avatar de koyosama koyosama - Membre confirmé https://www.developpez.com
le 13/09/2017 à 10:07
Citation Envoyé par Mrsky Voir le message
Web assembly n'a pas vocation a remplacer le JS coté front end mais à le soulager. En gros tu crées une sorte d'API pilotable par le JS.

Ce genre de projet a beaucoup de potentiel car pour créer un module wasm aujourd'hui tu dois le coder en C/C++, et je serais bien curieux de connaître la proportion de dev. web compétents dans l'un de ces langages.
Pilotable par Js pas sure. Web Assembly vient de l'initiative ASM.js ou tu peux faire du C / C++ et le transformer en JS.
Comme toi, comme tout language c'est complementaire. JS ne pourra disparaitre. Mais je pense qu'il regle deux problemes :
  • Le choix du langage cote navigateur. Apres tout on a encore des trucs sous flash, sous Java. Apres on a Dart, Typescript, Coffeescript, ... pour au final se retrouver avec du Javascript.
  • La vitesse, je ne connais toujours pas de jeux online via le browser qui existe sans utiliser flash. J'ai essayer par exemple EmpireofCode car je voulais une alternative a Screeps (Non coding game n'est pas le meme concept). Mais que ce soit screeps ou EmpireofCode, sur un vieux ordinateurs, une vielle connexion a 10 mega (qui n'est pas le plus lent), c'est juste la misere.


Je ne veux pas mentionner Javascript car c'est soit complementaire ou soit pas du tout. C'est a votre usage mais le but est de ne pas empecher l'autre.
Et puis Web Assembly ne sera pertinent avant 3-4 ans. Un language met en moyenne cette periode pour devenir stable et un conpcet navigateur en plus. Mais sa va dans la bonne direction.
Avatar de Paleo Paleo - Membre confirmé https://www.developpez.com
le 13/09/2017 à 12:29
Citation Envoyé par yahiko Voir le message
auquel je participe
Ah ? Eh bien, bon courage.

Par curiosité, quelle est l'approche ? Réécrire un parseur from scratch (mais sans dépendances wahou) ? Ou bien arrivez-vous à utiliser le compilateur TypeScript pour accéder à l'AST et générer une nouvelle sortie ?
Avatar de Paleo Paleo - Membre confirmé https://www.developpez.com
le 13/09/2017 à 12:35
Citation Envoyé par Mrsky Voir le message
Web assembly n'a pas vocation a remplacer le JS coté front end mais à le soulager. En gros tu crées une sorte d'API pilotable par le JS.
C'est aussi ce que j'ai compris.

Citation Envoyé par Mrsky Voir le message
Ce genre de projet a beaucoup de potentiel car pour créer un module wasm aujourd'hui tu dois le coder en C/C++, et je serais bien curieux de connaître la proportion de dev. web compétents dans l'un de ces langages.
D'un autre côté, si les Web Assemblies sont au JavaScript ce que les modules PHP sont au PHP, le langage C++ ne devrait pas empêcher l'écosystème de grandir. Pour PHP aussi les modules sont faits en C++.
Offres d'emploi IT
ANALYSTE D'EXPLOITATION INFORMATIQUE (H/F)
Banque Populaire de Val de France - Centre - Indre-et-Loire (37000)
Full Stack Data Engineer H/F
Sogeti France - Pays de la Loire - Nantes (44000)
ARCHITECTE SI - EDF SA (H/F)
Experis - Ile de France - NANTERRE (92000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil