Le compilateur GCC a fait récemment l’objet de deux événements inattendus : d’un côté la colère de Linus Torvalds, et de l’autre côté un prix de l’ACM (Association for Computing Machinery).
Le compilateur GCC (GNU Compiler Collection), très célèbre dans l’écosystème du libre et de l’open source, est utilisé pour le développement de grands projets comme le noyau Linux, dont plusieurs fonctionnalités dépendent de GCC. GCC propose une série de compilateurs pouvant prendre en charge les langages C, C++, Objective-C ou encore Java.
Lors du développement de la version 3.16 du noyau Linux, un bug a été constaté dans une fonction d’équilibrage de charge. Après plusieurs évaluations du code de Linux pour identifier le problème, Linus Torvalds s’est rendu compte que c’était le compilateur GCC 4.9 qui était la source du problème.
Dans un ton qui lui est caractéristique, Torvalds n’a pas ménagé sa colère et s’est emporté contre les développeurs de GCC. Il était dégoûté par le code généré par GCC 4.9, qu’il n’a pas manqué de qualifier de « merde ».
« Ok, je suis en train de regarder le code généré et votre compilateur est purement et absolument une *merde* », a écrit Linus Torvalds dans la liste de diffusion du projet.
Le problème indexé par Torvalds est le fait que le compilateur aurait apparemment renversé une constante lors de la génération du code sur architecture x86-64. « Le compilateur fait des choses absolument folles avec le renversement, y compris le renversement d’une constante », a critiqué Linus Torvals, avant d’enfoncer le clou. « Ce compilateur n’aurait pas dû être autorisé à sortir de la maternelle. »
La suite du message de Linus Torvalds présente de façon détaillée le bogue et les potentielles causes, ainsi que le rapprochement avec un autre bogue, avant de conclure que quoi qu’il en soit, il ne s’agit pas d’un bogue du noyau Linux. « C’est votre compilateur qui crée du code complètement cassé. », conclut Torvals, qui met ensuite en garde les développeurs de GCC. « Nous pourrions ajouter un avertissement pour nous assurer que personne ne compile avec GCC 4.9.0 et les gens de Debian devraient probablement downgrader leur brillant nouveau compilateur. »
GCC 4.9.0 est disponible depuis avril dernier. Une mise à jour (GCC 4.9.1) a été publiée récemment. Il n’est pas certain que le bug soit résolu dans cette version. Linus Torvalds a signalé le problème sur le bug tracker du projet. Pour l’instant, il est préférable d’utiliser GCC 4.8 qui est encore la version par défaut pour plusieurs distributions Linux.
Parallèlement, GCC a reçu pour la première fois un prix de l’ACM, après pratiquement 30 ans d’existence. Pour l’ACM, GCC « offre un compilateur portable, productif, conforme aux normes et optimisé, qui soutient plusieurs architectures et plusieurs langages de programmation ».
Pour rappel, le compilateur LLVM, qui existe depuis environ 10 ans, a reçu il y a 2 ans le même prix de l’ACM. Des travaux ont déjà été effectués par des développeurs pour compiler le noyau Linux avec LLVM/Clang. Dans Linux 3.15, il est pratiquement possible de compiler le Kernel avec LLVM.
Sources : message de Linus Torvalds sur LKML, ACM
Et vous ?
Que pensez-vous de la réaction de Linus Torvalds ? Justifiée ou disproportionnée ?
Utilisez-vous GCC ou LLVM ? Pourquoi ?
Linus Torvalds trouve un bug dans GCC 4.9 et qualifie celui-ci de « merde »
Le compilateur reçoit un prix de l'ACM
Linus Torvalds trouve un bug dans GCC 4.9 et qualifie celui-ci de « merde »
Le compilateur reçoit un prix de l'ACM
Le , par Hinault Romaric
Une erreur dans cette actualité ? Signalez-nous-la !