Extension du Adobe Flash Player / Adobe AIR avec C et C++ via ActionScript 3
Lors du MAX 2007 Adobe a montré un projet interne nommé “C/C++ to ActionScript Compiler” jusqu’à présent et Kevin Lynch a parlé du projet au Engage 2008. Ce projet est un cross-compiler pour ActionScript permettant à n’importe quel code C ou C++ de tourner sur le Adobe Flash Player ou Adobe AIR. Ce projet possède quelques finesses pour étendre la plateforme Adobe en terme de codage. La clé est que de nombreux langages sont construit à partir C/C++:
Java, Python, Ruby, PHP, Lua, Perl, C# (Mono), JavaScript, et beaucoup d’autres…
Une partie de son implémentation repose sur un pattern ActionScript qui permet le “green threading” : cela permet d’executer du code synchrone dans la machine virtuelle asyncrhone ActionScript. Le travail fait lors de ce projet permet d’ouvrir de nouvelles perspectives…
Comme beaucoup de société, Adobe possède de nombreux code C/C++ utilisé pour les filtres PhotoShop, les rendus PDF, pour lire et écriretous les formats de fichier existants, les librairies de polices, des renderers vectoriels très complexes, et autres… Avec Adobe il existe de nombreuses librairies open source qui pourraient servir de composant. Le plus gros attrait pour moi est qu’il n’y a besoin d’aucun portage de ces librairies, elles fonctionnent comme l’original. Par exemple, le comportement de Python dans le Flash Player est identique avec C-Python par rapport au comportement d’une version portée comme les projets IronPython et Jython. L’objectif est donc d’apporter des notions d’héritage, de librairies de code externe dans le Flash Player et Adobe AIR.
Un exemple de la complexité du projet : les ingénieurs ont portés une version C++ de Quake 3 dans le Flash Player… et cela fonctionne parfaitement et bien en plus ! C’est un cas extrême mais qui montre bien le potentiel de ce projet.Pour les envieux, ce projet n’est qu’interne à Adobe pour l’instant. Il sera intéressant de voir comment cela évolue et comment Adobe Flash Player et Adobe AIR pourraient devenir incourtournable comme plateforme de développement.