Download / Téléchargement : here / ici.
Toutefois, au sein de la sphère des développeurs il est facile de trouver des classements de langages par popularité (entre autres http://blog.codeeval.com/codeevalblog/2014 , http://www.tiobe.com/index.php/content/ ... index.html , http://spectrum.ieee.org/static/interac ... -languages ); qui montrent que le Lua est (beaucoup) moins populaire que nombre d’autres langages de script bien connus, tout particulièrement Javascript, Perl, PHP, Python, Ruby (par ordre alphabétique).
However, in the general developer population, it’s easy to find language popularity contests (e.g. http://blog.codeeval.com/codeevalblog/2014 , http://www.tiobe.com/index.php/content/ ... index.html , http://spectrum.ieee.org/static/interac ... -languages ) which concur that Lua is (much) less popular than multiple other well-known scripting-type languages, especially Javascript, Perl, PHP, Python, Ruby (in alphabetical order).
Motivations
Avant même de commencer ceci, on sait que réussir à faire tenir/fonctionner des environnements d'exécutions de ces langages (programmés en C ou C++), même sur les calculatrices les plus puissantes (TI-Nspire, HP Prime), est un défi en soi, car :
- La puissance brute du CPU, les quantités de RAM et d'espace de stockage sont généralement bien en-dessous des standards modernes du marché ;
- La Nspire est une plateforme hostile au développement natif, même si cela a été amélioré dernièrement grâce aux efforts pour mettre en place le C++ et newlib (Vogtinator, Ikj…) pour le SDK - déjà utilisé pour le portage de giac/xcas (cf. KhiCAS). La HP Prime est une plateforme ouverte et a un CPU plus puissant et plus de Flash (mais moins de RAM) que la TI-Nspire CX, mais son logiciel n’est pas documenté à l'heure de ce post, et la plateforme n'est pas vraiment populaire parmi les utilisateurs.
Before even starting the process, we know that fitting the execution environments (written in C or C++) for these languages, on even the most powerful calculators (TI Nspire, HP Prime), is a challenge due to:
- the raw CPU power, amount of RAM and amount of persistent storage of calculators being generally highly sub-par by modern market standards;
- the TI Nspire being a hostile platform for developing native code programs, even if this improved recently with the expanded Ndless SDK featuring C++ support and newlib (Vogtinator, lkj et al.), already used for porting giac/xcas to the Nspire (cf. KhiCAS). The HP Prime is an open platform, it has a faster CPU and more Flash (althrough less RAM) than the Nspire CX, but its software is undocumented at the time of this writing, and the platform is not really popular among users.
* contributions au portage Nspire de Linux et au système de build automatisé ( http://tiplanet.org/nspire-linux-builds/ )
* contributions à la librairie de base et à la toolchain Ndless, ayant notamment permis KhiCAS sus-mentionné;
* lecteur de fichiers WAV sur Nspire;
* Crafti, un Minecraft-like en code natif, démonstration du moteur 3D nGL qu’il a également programmé
- Portage de CPython + libs : il n’a pas été réalisé, car cela prendrait un temps considérable et poserait vraisemblablement d’importants défis de portabilité. Il est probablement mieux de s'attaquer à quelque chose de plus simple en premier lieu
- Portage de python-on-a-chip, a.k.a “p14p” (que Lionel Debroux avait d'ailleurs déjà partiellement porté pour la plateforme TI-68k/AMS) : portage effectué, et rapidement. Cependant, il ne pouvait qu'exécuter du bytecode généré par une version spécifique de CPython et non du code source Python directement ; p14p est assez limité au niveau des fonctions disponibles et des types de données. On note aussi qu'il y a eu assez peu de changements dans la base de code au cours des trois dernières années.
- Portage de MicroPython (un projet Kickstarter qui a réussi) : portage effectué aussi, et tout aussi rapidement. MicroPython supporte une version plus récente de Python que p14p, a plus de fonctionnalités et sa base de code est encore active actuellement.
Sa performance sur un calcul de Fibonacci était correcte, mais néanmoins inférieure au Nspire Lua.
Afin d'augmenter la vitesse, Fabian s'est mis à écrire un émetteur de code ARM natif, qu'il a d'ailleurs contribué à l'upstream de Micro Python (rapidement intégré)
Des premiers tests sur une version de développement montrent qu'avec ce "JIT", le Lua est alors dépassé par le Python.
* contributions to the Nspire port of Linux and the automated build system ( http://tiplanet.org/nspire-linux-builds );
* contributions to the base library and toolchain of Ndless, which made it possible to port the powerful Giac/Xcas engine to the Nspire, mentioned above;
* Nspire WAV file player;
* Crafti, a native code Minecraft-like program, showcasing the nGL 3D engine that he programmed as well.
- porting full-blown CPython + libs: it was not done, as it would be (much ?) more work and pose interesting portability challenges. It’s probably better trying something simpler first
- porting python-on-a-chip, known as “p14p” (which Lionel Debroux had already partially ported to the TI-68k/AMS platform) : the port is done and it was pretty quick. However, it could only execute bytecode generated by a specific version of CPython and not python source; it was quite limited in available functions and data-types; fairly few code changes have been performed over the past three years.
- porting MicroPython (a successful Kickstarter project): that, too, was a quick success. Micro Python supports a newer version of Python than p14p does, it’s more featureful than p14p is, and it’s still under active development.
Performance on the Fibonacci test was decent, though lower than Nspire Lua. In order to improve speed, Fabian set to write a native ARM code emitter, which he contributed to upstream micropython; it was quickly integrated
Some tests on developement versions show that Micro Python is then faster than Lua when using the "JIT".