Via John Resig, (Monsieur "jQuery"), j'ai découvert HotRuby qui est un projet permettant d'exécuter du ruby dans une page web.

Voici comment ça fonctionne

  • inclure les fichiers js de hotruby
  • mettre son code ruby dans une balise <script type="text/ruby"></script>
  • Ce code est envoyé sur un serveur via xmlHttpRequest, et en réponse, le serveur renvoi une structure en javascript qui correspond à du bytecode Ruby
  • Ce bytecode est alors executé par une VM programmée en javascript (la VM de HotRuby donc)
  • Pour les détails, voir le billet de John

Et voila :-) Astucieux non ?

Alors pour l'anecdote, il faut savoir que cette VM en javascript exécute le bytecode de Ruby 5 fois plus vite dans Firefox 3.0 que la VM native de Ruby ! Une VM en javascript qui exécute plus vite qu'une VM codée en C, c'est impressionnant !

Mozilla 2 (Firefox 4), comportera une machine virtuelle pour Javascript 2 (projet Tamarin, à partir de la VM libérée par Adobe). Ainsi, le javascript des pages web sera converti en bytecode pour Tamarin, avant d'être exécute par Tamarin. Supposons maintenant que par l'intermédiaire d'une extension, on puisse installer un compilateur d'un langage X qui génère du bytecode pour Tamarin, et donc qu'on puisse ensuite faire <script type="text/ruby"></script> ou <script type="text/python"></script>. On n'aurait plus besoin de passer par cette étape de xmlHttpRequest, donc par un compilateur exterieur :-)

Bon, je rêve, pas dis que ce sera faisable dans Firefox 4, mais à mon avis, il manquera peu pour que ça puisse exister :-) Quoique, c'est peut-être le but de IronMonkey... Je n'ai pas vraiment compris l'objectif de IronMonkey mais je crois qu'il s'agit de porter IronRuby et IronPython pour qu'ils génèrent du bytecode pour tamarin...