Des nouvelles des compilateurs
Par Larry Ayers.
Adaptation française de Pierre Tane
Précédent Suivant Table des matières
5. Des nouvelles des compilateurs
5.1 Introduction
Le compilateur GNU
gcc
est l'un des programmes de la Free Software Foundation les plus appréciés. Il fait maintenant partie intégrante des distributions Linux. L'existence degcc
et de ses utilitaires annexes (make
,autoconf
, etc) permet de distribuer le code source de n'importe quoi, du noyau Linux à une impressionnante panoplie d'applications et d'utilitaires du logiciel libre. Cet état de fait est vital pour la survie et la bonne santé de Linux. Des gens différents utilisent des noyaux et des distributions différents, et ce serait trop demander aux développeurs bénévoles de créer des distributions directement utilisables (dites « binaires ») pour toutes les variantes de Linux et des autres OS basés sur Unix. Richard Stallman a bien raison d'insister sur la dépendance de Linux vis-à-vis d'un certain nombre d'utilitaires GNU.Ces derniers temps, une certaine effervescence règne dans le monde des activistes de
gcc
, entraînant de nombreuses mises-à-jour et donnant aux utilisateurs de Linux un choix plus étendu pour leur environnement de développement.Les personnes travaillant sur les projets GNU opèrent plutôt en vase clos : l'utilisateur moyen ne peut facilement accédeder aux nouvelles, ni aux rapports d'avancement. La mise à disposition d'une nouvelle version est généralement la seule indication que le développement avance. Comme les logiciels GNU sont distribués sous la licence GNU, rien n'empêche les autres développeurs d'en modifier le code et d'en distribuer des variantes. Il existe une autre approche du développement du logiciel libre, dans laquelle les patches et les versions d'évaluation sont librement disponibles pour tous. Le noyau Linux (avec mise à disposition, à la fois des versions stables et des versions instables de développement) en est un exemple évident et qui fait école. XEmacs, KDE et GNOME en sont d'autres. Depuis l'avènement d'
egcs
, il semblerait que les développeurs GNU se mettent à ce modèle de développement, si l'on se réfère à ce qui est disponible sur le site web du projet GNU.L'article d'Éric Raymond, The Cathedral and the Bazaar, (NdT : Ce document a été adapté en français, et est disponible sur http://www.lifl.fr/~blondeel/traduc/) est une interprétation pertinente et intéressante de ces deux modèles différents de développement de logiciel libre. Il est à l'origine de l'une des premières variantes disponibles de
gcc
(à ma connaissance) :egcs
.5.2
egcs
gcc 2.7.2
est le compilateur standard de GNU depuis un certain temps déjà. La société Cygnus Corporation propose une assistance commerciale pour certains programmes GNU et a porté un certain nombre d'entre eux sous MS-Windows. Un groupe de programmeurs a tenté une expérience : à partir des sources de GNU, ils ont adapté les patches ce qui donna en faitgcc-2.8.0
(en terme de numérotation des sources de développement GNU) et ont ajouté des fonctions expérimentales qui n'intéressaient pas les développeurs GNU, ou qu'ils prévoyaient d'ajouter ultérieurement. L'idée était de rendre périodiquement librement disponible des versions d'évaluation dans l'espoir d'attirer de nouveaux développeurs. Cette approche semble fonctionner : je ne sais pas combien de nouveaux programmeurs apportent leur contribution au projet, mais les deux versions qu'ils ont pour l'instant distribuées (1.00 et 1.01) sont utilisées par un grand nombre de personnes sans aucun problème. Tout changement intéressant dansegcs
sera mis à la disposition des développeurs degcc
afin de peut-être l'inclure dans les prochaines versions. C'est bon aussi bien pour les utilisateurs finals que pour les programmeurs GNU, dans la mesure où les utilisateurs essaient ces nouvelles fonctionnalités et ces nouvelles fonctions (ainsi les éventuels bugs sont signalés et corrigés). D'autre part, les sources peuvent être utiles aux gens de GNU qui s'occupent degcc
.5.3
pgcc
gcc
etegcs
sont destinés à être compilés et utilisés sur une grande variété de processeurs. Cependant, un autre groupe de développeurs a modifié le code d'egcs
afin qu'il emploie certaines des instructions spécifiques aux processeurs Intel Pentium.Pgcc
consiste en un ensemble de patches qui peuvent être appliqués au code source d'egcs
, ce qui permet de compiler du code avec des optimisations spécifiques au Pentium. Ces développeurs disent que le temps d'exécution (des exécutables compilés avecpgcc
) peut être de cinq à trente pourcents inférieurs à ceux des binaires engendrés avecgcc
. Une nouvelle distribution Linux appelée Stampede utilise pgcs pour compiler les binaires du noyau et les applications qu'ils comptent distribuer. Il est intéressant de noter que les patches originaux que les développeurs depgcs
ont utilisé comme point de départ proviennent d'une équipe de programmeurs de chez Intel.5.4 Mon expérience
Bien que le compilateur
gcc
de GNU a toujours bien fonctionné chez moi, l'attrait de la nouveauté m'a conduit à tenter l'expérience avecegcs
quand la première vraie version est apparue sur le site web d'egcs, fin 1997. La première chose que j'ai remarquée était que le compilateur tend à générer davantage d'avertissements que ne le faisait l'option-Wall
degcc 2.7.2
. Ceux-ci ne semblent pas avoir des conséquences néfastes et j'ai entendu dire quegcc 2.8.0
avait le même comportement. Tout ce que j'ai essayé s'est bien compilé à part les sources de KDE. J'ai entendu dire que les problèmes allaient être réglés avec KDE Beta 3. Si vous n'avez jamais compilé une version degcc
à partir des sources, attendez vous à une compilation longue et gourmande en espace disque. Cela arrive à différentes étapes : lors de la dernière, le compilateur se compile lui-même, un procédé nommé le boot-strapping.Quelques temps après avoir installé
egcs
, je suis tombé sur le site de pgcc. J'ai téléchargé un grand nombre de patches que j'ai appliqués au code source d'egcs
. En plus de la dimution du temps d'exécution vantée (qui, dans la plupart des cas, n'est pas assez importante pour être remarquée), l'optimisation peut-être augmentée jusqu'à-O6
et un commutateur spécifique au Pentium,-mpentium
peut être utilisé. Les exécutables obtenus ont tendance à être plus imposants que ceux degcs
à cause de l'inclusion par défaut de la gestion des exceptions. Cela peut être désactivé par l'option-fno-exceptions
.Jusqu'ici, j'ai compilé plusieurs noyaux Linux, XEmacs, mutt, slrn, Gimp, gzip, bzip2 et d'autres programmes sans aucun problème. J'aurais aimé être une personne bien organisée et avoir chronométré les temps d'exécution avant et après avoir utilisé
pgcs
mais ce n'est pas le cas. Par exemple, j'utilise XEmacs 20.5 beta-22 avec le noyau Linux 2.1.84 et l'éditeur me semble répondre plus rapidement qu'avant. Mais, est-ce dû au compilateur, au noyau, à la version d'XEmacs ou (plus probablement) aux trois ? Trop de variables et pas assez de temps !Je ne vous recommande pas d'installer ces variantes de
gcc
, à moins que vous n'ayez l'intention de suivre activement les groupes de discussion, les sites webs ou les listes de diffusion. Heureusement, les problèmes et les moyens de les résoudre sont signalés rapidement et, bien sûr, vous pouvez toujours vous rattraper en réinstallant les paquetages de distribution degcc
si votre configuration commence à mal tourner. Il sera intéressant de voir ce qu'il sortira de cette bifurcation non compétitive dans l'évolution degcc
.
Précédent Suivant Table des matières
Copyright (c) 1998, Larry Ayers. Publié dans le Numéro 25 de la Linux Gazette
Adaptation française de Pierre Tane