Accueil » Actualité » La compilation virtuelle aide Apple

La compilation virtuelle aide Apple

Image 1 : La compilation virtuelle aide AppleComment améliorer les applications et simplifier la généralisation de multiples composants capables d’effecteur des calculs ? En utilisant un nouveau compilateur. Alors que GCC est l’outil le plus souvent utilisé sur les plateformes Linux et qu’il est intégré dans les outils de développement de Mac OS X, Apple utilise depuis quelques années LLVM pour certains de ses développements et supporte le développement de ce programme.

LLVM, la compilation virtuelle

LLVM, pour Low Level Virtual Machine, est un compilateur qui travaille différemment de ses ancêtres. En simplifiant, un compilateur qui utilise LLVM va produire un code qui va ensuite être adapté en fonction de l’architecture cible. Contrairement à Java ou au développement en C#, LLVM s’adapte à la majorité des langages. En fait, le compilateur produit du code pour un processeur virtuel, et ce code est ensuite adapté à une architecture réelle (x86, ARM — pour l’iPhone —, GPU, etc.). Un exemple d’utilisation de LLVM est utilisé dans Leopard (Mac OS X 10.5) : le pipeline OpenGL du système utilise LLVM pour prendre en charge certaines fonctions absentes du matériel (notamment avec les GMA) et une compilation JIT (Just In Time) permet d’effectuer les calculs sur le CPU rapidement quand le GPU n’est pas compatible. LLVM devrait permettre de prendre en charge de façon transparente diverses architectures dans une même machine (un CPU x86, une carte graphique, etc.) et donc améliorer la prise en charge des GPU en tant que puce de calcul. Notons par ailleurs que comme LLVM est open source (sous la licence Open Source BSD), il est parfaitement possible de développer des API pour la prise en charge de différents langages (Python et LUA sont notamment disponibles).

Au final, sans totalement révolutionner le monde de la compilation, LLVM est une technologie très efficace, ouverte et transparente et sa licence lui permet d’être utilisée sous Linux (et autres Unix) en plus de Mac OS X.