Qu'est-ce qui bloque Ruby, Python pour obtenir la vitesse de Javascript V8 ?
Rien.
Bon, d'accord : l'argent. (Et le temps, les gens, les ressources, mais si vous avez de l'argent, vous pouvez les acheter).
Une équipe d'ingénieurs brillants, très spécialisés et très expérimentés (et donc très bien payés) travaille sur V8. Ils ont des dizaines d'années d'expérience (individuellement, collectivement, c'est plutôt des siècles) dans la création de moteurs d'exécution performants pour les langages OO dynamiques. Ce sont essentiellement les mêmes personnes qui ont créé la JVM Sun HotSpot (parmi beaucoup d'autres).
Lars Bak, le principal développeur, travaille littéralement sur les VM depuis 25 ans (et toutes ces VM ont abouti à la V8), ce qui représente pratiquement toute sa vie (professionnelle). Certaines des personnes qui écrivent les VM de Ruby n'ont même pas 25 ans.
Y a-t-il des caractéristiques Ruby/Python qui bloquent la mise en œuvre des optimisations (par exemple, la mise en cache en ligne) du moteur V8 ?
Étant donné qu'au moins IronRuby, JRuby, MagLev, MacRuby et Rubinius ont une mise en cache en ligne monomorphique (IronRuby) ou polymorphique, la réponse est évidemment non.
Les implémentations modernes de Ruby font déjà beaucoup d'optimisations. Par exemple, pour certaines opérations, la méthode de Rubinius Hash
est plus rapide que celle de YARV. Cela n'a pas l'air très excitant jusqu'à ce que vous réalisiez que la classe de Rubinius Hash
est implémentée en Ruby pur à 100%, tandis que celle de YARV est implémentée en C optimisé à la main à 100%.
Donc, au moins dans certains cas, Rubinius peut générer un meilleur code que GCC !
Ou bien il s'agit plutôt d'une question de ressources mises dans le projet V8 par Google.
Oui. Pas seulement Google. La lignée du code source de V8 a maintenant 25 ans. Les personnes qui travaillent sur V8 ont également créé la VM Self (à ce jour, l'un des moteurs d'exécution de langage OO dynamique les plus rapides jamais créés), la VM Smalltalk Animorphic (à ce jour, l'un des moteurs d'exécution Smalltalk les plus rapides jamais créés), la JVM HotSpot (la JVM la plus rapide jamais créée, probablement la VM la plus rapide de tous les temps) et OOVM (l'une des VM Smalltalk les plus efficaces jamais créées).
En fait, Lars Bak, le principal développeur de V8, a travaillé sur chacun d'entre eux de ceux-là, plus quelques autres.