• [^] # Re: Compilateur « à la volée »

    Posté par . En réponse à la dépêche Sortie de Gambas 3.12. Évalué à 10.

    C'est d'abord en rapport avec le coup de gueule n°1 : Un développeur, Emil Lenngren, avait écrit un compilateur just-in-time pour Gambas basé sur LLVM. Or, du jour au lendemain, c'est-à-dire lors du passage de LLVM 3.5 à LLVM 3.6, plus rien ne compilait, car LLVM avait décidé de changer leur API.

    Si les librairies dont on dépend peuvent rendre votre programme complètement inutilisable lors d'un changement de version mineure, alors on bâtit sur du sable.

    Du jour au lendemain, les heures passées à programmer le composant doivent être jetées à la poubelle.

    J'ai donc ensuite regardé du côté de gcc. Malheureusement, l'API de gcc pour écrire un compilateur JIT est toujours en alpha, et même si j'avais plus confiance, je me méfiais quand même.

    En traduisant le bytecode Gambas en code C, on ne dépend plus que de la norme du langage. Et cette norme (ISO C99 en l'occurrence) ne peut pas changer du jour au lendemain sans prévenir, au gré des volontés de développeurs qui ne respectent pas le principe de rétro-compatibilité.

    Dans le genre, GTK+ n'est pas mal non plus. A chaque nouvelle version mineure de GTK+3, le développeur est obligé de faire des prières et d'espérer que son programme sera toujours fonctionnel voire compilable sans devoir en récrire des parties importantes.

    En conclusion, et même si j'ai du casser la rétro-compatibilité de Gambas deux ou trois fois (pour corriger des bugs), je trouve cette façon de faire absolument honteuse.