Javascript [Veille]

le

Asm.js vient de débarquer dans Firefox Nightly et les premiers tests d'intégration de source map ont été montrés.

Pour rappel, source map, permet à un langage compilé en javascript de produire aussi une carte qui sera utilisé pour afficher les bonnes lignes pour les erreurs, les lignes du code source, et non du code généré, comme actuellement.

Asm.js est un sous ensemble du javascript (en enlevant les surprises), avec des annotations pour aider la compilation, principalement du typage de variable. Les annotations sont des astuces de syntaxes, comme a = +1 ou a|0 qui ne casse pas le parser, un code asm.js reste compréhensible par tous moteurs javascript. L'optimisation ne se fait pas dans le flot d'exécution en détectant un passage sensible, mais dés le départ, en profitant des indices et de l'assurance de ne pas trouver de choses bizarres. Asm.js est dans la lignée des arrays typées, mais avec comme objectif, les langages compilant en javascript.

Bref, deux nouvelles pour pousser les dialectes javascipts et fournir des bibliothèques offrant de belles performances. Cappuccino et son ObjectiveJ fait la gueule à cause de l'angoisse du framework des développeurs javascript qui brime l'adoption de son jouet. Il n'a pas entièrement tort, une belle interface nécessite un travail de finition infinie, ce qui est impossible à faire sans s'appuyer sur du code existant, mais d'un autre côté, la très faible durée de vie de beaucoup de technologie refroidit un peu les envies d'investissements. Des spécialistes yui, extjs, sproutcore ou dojo dans la salle? Enfin, sencha, amber/ember, backbone, angular, il faut suivre!

Les gagnants dans l'histoire seront coffeescript (un hommage à ruby), typescript (une déclaration d'amour aux IDE par Microsoft) et clojurescript (une variante clojure, pour les inconditionnels de la programmation fonctionnelle), Low Level JavaScript (pour les nostalgiques du C++), EMScripten (un compilateur LLVM vers javascript) et autres variantes plus ou moins exotiques. LLJS a déjà tester d'intégrer cette optimisation, et annonce des gains notables en performance. Je suis curieux de voir comment V8 va l'intégrer, et ce que node en fera.

Google a eu à la fois de l'inspiration avec son closure qui impose un sous-ensemble de javascript prévisible et analysable, ainsi qu'une ambition démesurée avec son Dart. Dart qui a du mal à sortir du giron de Chrome. C'est ballot, juste au moment où Google plante les RSS, ou Explorer fait des efforts de standard (jQuery 2 ne contiendra aucun effort spécifique pour Explorer), Google propose d'investir sur une technologie qui a de très fortes chances de ne jamais aller au-delà de Chrome? Malgré des promesses, aucune nouvelle de la VM Dart, en dehors de Chromium, tant pis pour les serveurs, ce sera Node qui continuera à porter le flambeau de V8 côté serveur.

Javascript est en train de devenir le bytecode du web. Voila, le pouilleux de la classe, que tout le monde adore détester va devenir le boss.


Partager cet article :