Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

FTL JIT : le nouveau moteur JavaScript d'Apple pour obtenir du code natif
Il utilise la Low Level Virtual Machine

Le , par sekaijin, Expert éminent
JavaScript est en plein essor, et les développeurs s’orientent de plus en plus vers le langage pour le développement d’applications complexes. La course est à la vitesse d’exécution du JavaScript chez les éditeurs de navigateurs qui veulent à JavaScript des performances proches de celles des langages natifs

Après Google avec son moteur V8 ou encore Mozilla avec son moteur SpiderMonkey, c'est au tour d'Apple de se pencher sur le sujet afin d'améliorer et de faire évoluer son JavaScriptCore.

FTL JIT est un nouveau moteur ECMAScript en cours de développement chez Apple. La nouveauté de celui-ci est l'usage de LLVM (Low Level Virtual Machine) permettant de créer une machine virtuelle plus ou moins au même titre que Java et sa JVM.
Il y a déjà quelques années, Apple a abandonné GCC pour passer à LLVM (http://llvm.org/).

Les premiers tests sont encourageants. Vous pouvez vérifier cela en suivant la procédure suivante : https://trac.webkit.org/wiki/FTLJIT. Et l'équipe d'Are We Fast Yet propose des graphiques comparatifs avec les autres navigateurs et leur moteur.

Apple n’est pas le premier à prendre ce chemin pour améliorer les performances des applications Web. Google avait proposé un plugin pour exécuter du code natif appelé Google NaCl (Google Native Client). De son côté, Alon Zakai, développeur de chez Mozilla avait alors proposé Emscripten, un projet consistant à compiler du code C et C++ en JavaScript. Cette fois-ci, c'est le contraire. FTL JIT est un compilateur Fourth Tier LLVM Just in Time (à la volée) qui compile le JavaScript en code natif.

La page officielle.

Et vous ?

Que pensez-vous de ces nouveaux moteurs JavaScript et de leur utilité ?

LLVM est-elle la technologie à suivre aujourd'hui ?


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


 Poster une réponse

Avatar de la.lune la.lune - Membre chevronné https://www.developpez.com
le 09/05/2014 à 10:57
Comme on sait tous le moteur V8 fait déjà de la compilation JIT avant d’exécuter, alors il faut d'abord voir ce qu'apporte FTL JIT devant V8. Si FTL est basé sur LLVM, alors l’intérêt serait plutôt de pouvoir compiler certains composants au préalable ou que le navigateur pusse prendre une version déjà compilé du script en cache par exemple et l'utiliser sans avoir à compiler à chaque chargement de la page.

Ce qui serait plus intéressant dans tout ça c'est la réutilisabilité et la modularité, si par exemple JQuery pourrait être compilé et stocké quelque part dans un serveur, alors si FTL le détecte une référence de scrip dans la page il part chercher la version compilé au lieu de compiler tout le fichier JQuery encours, car sinon on a pas résolu le problème.

L’intérêt d'un VM comme LLVM c'est ça, qu'en JavaScript on pusse manipuler des programmes déjà compilés sans que le moteur soit obligé de le faire comme ça se passe avec le moteur nashorn de Java 8. Avec le projet Avatar côté serveur qui introduit Avatar.js qui offre le modèle de programmation comme Node.js mais sur la JVM grace à Nashorn, il y a ce gain qui permet d'avoir des composants java déjà compilés et on les réutilise.

J'espère que LLVM pourra ouvrir la porte au multi-tache en JavaScript dans les navigateurs, car parmi les chose qu'Avatar.js apporte comme nouveauté côté serveur, c'est que le fait que la JVM soit multi-tache alors on peut instancier des Thread et passer des fonction en paramètres avec Nashorn et ces fonctions seront exécutés en parallèles, certes il faut les joindre au thread encours car ECMAScript ne définit pas le concepts de multitâche, mais pour le programmeur ils s'exécuter de façon asynchrone mais chaque Thread peut s’exécuter séparément en parallèle et exploiter le multicore.

Si vous faites des boucles infinis et vous afficher des choses pour chaque thread vous pouvez voir dans la console des traitement simultanés, ils font de la concurrence. Ainsi, si les Thread font des traitements qui n'ont rien n'avoir des objets que gère le thread encours ils ont une liberté totale et peuvent faire du 100% parallèle, en fonction du nombre de thread et nombre de processeur.
Avatar de nevada51 nevada51 - Membre du Club https://www.developpez.com
le 09/05/2014 à 17:06
La nouveauté de celui-ci est l'usage de LLVM (Low Level Virtual Machine) permettant de créer une machine virtuelle plus ou moins au même titre que Java et sa JVM.

Bizarement il est admis que LLVM est très bon pour faire de l'AOT, mais reste trop long et pousse les optimisations trop loin pour être un JIT performant.
Offres d'emploi IT
Ingénieur conception en électronique de puissance H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Architecte et intégrateur scade/simulink H/F
Safran - Ile de France - Vélizy-Villacoublay (78140)
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique JavaScript : Xavier Lecomte -