Suite à l'annonce de l'intégration de PCC dans NetBSD, je me suis intéressé aux compilateurs libres qui existent. En chatouillant Google et Wikipédia, j'ai obtenu cette petite liste :

  • GCC (GNU Compiler Collection)
    • Licence GNU GPLv2 avec un poil de LGPL
    • Projet lancé en 1985 par Richard Stallman et développé aujourd'hui en partie par RedHat. Fait parti du projet GNU.
    • Intégré dans de nombreux IDE. Exemples : DJGPP (MS-DOS) ; MinGW, Cygwin et Dev-C++ (Windows) ; etc.
  • PCC (Portable C Compiler)
    • Licence BSD
    • Projet lancé dans la fin des années 1970 par Stephen C. Johnson
    • Plus d'informations dans les commentaires de l'annonce linuxfr et des critiques de gcc
  • Watcom
    • Logiciel libéré en 2003 : OpenWatcom (licence)
    • Logiciel propriétaire ayant pour origine un compilateur Fortran écrit en 1965 par des étudiants de l'Université de Waterloo (Canada). Une version optimisée pour le C et pour PC est apparue en 1988 (Watcom C 6.0). Lire l'histoire complète.
    • Compilateurs de tous les jeux MS-Dos de 1993 à 1996 (DOOM, Descent et Duke Nukem 3D, etc.)
  • LLC (Local C Compiler)
    • Développé par Chris Fraser et David Hanson
    • Projet de l'Université de Princeton
    • Logiciel libre ?
    • Intégré dans l'IDE « Lcc-win32 »
  • SDCC (Small Device C Compiler)
    • Licence GNU GPL
    • Projet lancé Sandeep Dutta et ouvert aux contributions (Sourceforge) en 1999
  • TCC (Tiny C Compiler)
  • TenDRA
    • Projet initié par la DERA (agence du département de la Défense du Royaume-Uni) au milieu des années 1990
    • Licence BSD

Cette liste est sûrement incomplète, mais je pense que les compilateurs libres les plus populaires y sont listés. Consultez également la liste des compilateurs C de Wikipédia anglophone. Il existe de nombreux compilateurs commerciaux dont certains sont gratuits sous certaines conditions : Microsoft (Visual Studio), Intel (ICC), Borland (Turbo C, C++ Builder), ...

Pour information, un programme C exécuté dans LLVM 2.0 (Low Level Virtual Machine) est 20% plus rapide que lorsqu'il est exécuté avec GCC 4.2. On peut donc supposer que LLVM a accès à des algorithmes d'optimisation auxquels GCC n'a pas accès (sûrement parce que GCC est statique alors que LLVM est dynamique).

Pour les plus passionnés, un lien utile : Linux Assembly.

Perso, je suis déçu que PyPy n'ai pas réussi à être plus rapide que CPython (l'implémentation de référence en C) car pourtant sa technologie était bien plus évoluée :-( Apparemment, PyPy est plus un laboratoire d'expérimentation qu'une implémentation optimisée de Python.