La version 2.9 de LLVM vient de sortir et a été annoncée par Chris Lattner le 6 avril !
Pour ceux qui se posent encore la question, LLVM est une suite de compilation concurrente de GCC, sous licence UIUC (semblable à BSD), qui a pour but de produire des briques de bases modulaires pour construire toute sorte de programmes : compilateurs, debugger, assembleur, etc. L'aspect hautement modulaire permet également de pouvoir travailler sur une petite partie et d'en faire bénéficier toutes les autres. C'est notamment le cas des optimisations : en effet, LLVM utilise une représentation intermédiaire (IR) parfaitement spécifiée et les optimisations se font sur cette représentation. Et ce n'est qu'un des nombreux avantages de LLVM.
Cette version 2.9 permet de consolider plein d'aspects de LLVM. Parmi les nouveautés principales, on notera :
- la génération de code a été améliorée, en particulier pour l'architecture ARM ;
- l'optimisation au moment de la liaison (LTO) a été améliorée également ;
- un nouvel allocateur de registre a été écrit, mais n'est pas activé par défaut pour cette sortie ;
- l'infrastructure Machine Code est désormais utilisée par défaut pour produire du code objet directement (plutôt que de passer par un assembleur externe) ;
- Clang, le compilateur C/C++/Objective-C/Objective-C++ gère le C++0x de mieux en mieux, avec l'ajout des rvalue references et des variadic templates ;
- LLDB, le débugger du projet LLVM, atteint un certain stade de maturité alors que ce n'était qu'un projet larvaire à la dernière sortie.