Conférence Parinux : "le compilateur GCC : développements récents, greffons et outil MELT"

Posté par  . Modéré par patrick_g.
Étiquettes :
9
7
jan.
2010
GNU
Basile Starynkevitch nous montrera les dernières avancées du compilateur GCC le mardi 12 janvier 2010 à 19h15, à Paris.

Un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, directement utilisable par un ordinateur.

Le compilateur GCC (Gnu Compiler Collection) sera présenté par l'un de ses principaux contributeurs, Basile Starynkevitch, ainsi que son architecture, sa communauté, son histoire, depuis un compilateur simple pour C jusqu'au compilateur multi-langage, multi plate-forme qu'il est devenu.
L'organisation du développement de GCC sera évoqué. Une tendance récente de GCC est de permettre bientôt des traitements de plus en plus variés sur le code source des programmes, complémentaires de la génération de code machine, qui est la raison d'être des compilateurs.
En particulier on évoquera les thèmes de l'analyse statique de code, de l'optimisation adaptative, du refactoring, en s'appuyant sur les travaux en cours dans la branche MELT de GCC et dans le projet GGCC. Il est fortement conseillé de s'incrire sous :
http://www.parinux.org/content/conference-gcc-mardi-12-janvier-2010

La conférence se déroulera à l'Espace Loisirs et Multimedia, 105 avenue de La Bourdonnais, 75007 Paris (Métro : École Militaire)
le mardi 12 janvier de 19h15 à 20h45.

Aller plus loin

  • # Pas une super definition...

    Posté par  . Évalué à 5.


    Un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, directement utilisable par un ordinateur.


    Le debut de la definition est correcte, mais malheureusement, la fin casse tout. Le langage cible n'est pas toujours 'utilisable par un ordinateur' (entre guillemet car ce terme est super vague).

    En ce qui concerne gcc en particulier, il est bien incapable de generer du code interpretable par un CPU.
    • [^] # Re: Pas une super definition...

      Posté par  (site web personnel) . Évalué à 3.

      Tout à fait d'accord !

      Citons la compilation vers de « langages de haut-niveau » vers C (qu'il faudra alors à son tour compiler), ou vers des langages interprétés par des machines virtuelles.

      Des exemples :
      Gambit-C compile du Scheme vers du C;
      OCaml compile de l'OCaml vers du code octet pour sa machine virtuelle, ou produit directement du code machine pour certains processeurs;
      Java qui compile vers la JVM.



      >> Une tendance récente de GCC est de permettre bientôt des traitements de plus en plus variés sur le code source des programmes,

      J'aurais aimé plus de détails sur ces points. Autant j'ai une bonne idée de ce qu'il est possible de faire, autant je n'ai aucune idée de ce que GCC sait faire…
      Fait-il de l'évaluation partielle (Partial_evaluation) ? de l'analyse d'alias (Alias_analysis) ? de la détection de débordement de tampons ?

      J'ai rien contre les optimisations, mais je me demande s'il ne faudrait pas insister un peu plus sur l'analyse de code dans une optique sécuritaire, afin de repérer plus de bogues et d'inciter les développeurs à fournir du code plus sûr et correct…
      • [^] # Re: Pas une super definition...

        Posté par  (site web personnel) . Évalué à 5.

        >>> J'aurais aimé plus de détails sur ces points. Autant j'ai une bonne idée de ce qu'il est possible de faire, autant je n'ai aucune idée de ce que GCC sait faire…

        Je vais aller à la conf de mardi car j'essaye de récolter un max d'infos pour fignoler la prochaine news GCC 4.5. Je poserai tes questions à Basile.
      • [^] # Re: Pas une super definition...

        Posté par  (site web personnel) . Évalué à 2.

        Quelques amuses gueules sont proposés sur la page donnée en lien dans la dépêche de Mlle Jumeau. Extraits ?

        "des optimisations spécifiques à une librarie ou une application, la validation de règles de codage et le diagnostic " (...) "une forme de programmation par aspects" (...) "L'outil MELT [Middle End Lisp Translator]" (...)

        Difficile de faire une dépêche d'annonce sans dévoilé du contenu :) En même temps, le seul nom "Mr Starynkevitch" devrait déplacer les foules. Par contre, vivement la dépêche sur la sortie de gcc 4.4.5, surtout pour les non parisiens :))


        ps : et si tu souhaites te mettre encore plus l'eau à la bouche, il y a le pdf de Parinux sur la conférence de novembre 2008 ... histoire de 'faire le point' avant celle ci :)
        www.parinux.org/files/presentation_parinux_nov08_gcc.pdf
      • [^] # Re: Pas une super definition...

        Posté par  (site web personnel, Mastodon) . Évalué à -3.

        Je ne suis absolument pas d'accord sur ta définition d'un compilateur. Un compilateur est un outil qui permet de traduire un code source, intelligible par un humain, en un code objet, directement traitable par une machine. Quelle soit virtuelle ou physique d'ailleurs.

        Mais les outils qui traduisent du code d'un langage en un autre ne sont pas des compilateurs. Ce sont des traducteurs.

        Gambit-C ne compile pas, il traduit. M'enfin, il y a bien des abrutis qui prétendent compiler avec le compilateur MS Visual Studio...
        • [^] # Re: Pas une super definition...

          Posté par  (site web personnel) . Évalué à 6.

          Non pas vraiment. Pour moi l'usage, c'est qu'on parle de compilation dès que le langage cible est assez différent du langage source, ce qui implique que le programme (compilateur) doit faire des tranformations assez complexes sur le programme source (ie, pas seulement de nature syntaxique).

          Par exemple, transformer du Haskell en C, c'est de la compilation.
        • [^] # Re: Pas une super definition...

          Posté par  . Évalué à 2.

          Mais les outils qui traduisent du code d'un langage en un autre ne sont pas des compilateurs. Ce sont des traducteurs.

          Je suis d'accord avec toi. Je dirais même des «transcodeurs».
        • [^] # Re: Pas une super definition...

          Posté par  (site web personnel) . Évalué à 3.

          >> Un compilateur est un outil qui permet de traduire un code source, intelligible par un humain, en un code objet, directement traitable par une machine. Quelle soit virtuelle ou physique d'ailleurs.

          Double pas d'accord.

          Un compilateur, c'est un transducteur qui préserve la sémantique.

          D'une part, tu as des compilateurs qui prennent en entrée du code inintelligible pour un humain, qui a pu être généré par une application graphique (comme des descriptions de hardware), pour générer par exemple du VHDL.
          On peut aussi compiler vers une machine (et pas vers un langage qui tourne sur une machine) : j'ai un ancien pote de labo qui compilait (juste-à-temps) du Scheme vers du FPGA.

          D'autre part, je peux aussi affirmer que « GCC est une machine » qui sait directement traiter le code généré par Gambit-C.

          Et ton code objet, c'est quoi ?
          Dans ta vision réductrice, c'est juste un langage qui est à son tour interprété (par un machine). Donc si je transforme du Scheme en javascript (langage qu'on peut évaluer), alors j'ai bien compilé. Puis du javascript en Scheme (langage qu'on peut évaluer), alors j'ai encore compilé. Par composition, transformer du Scheme en Scheme, c'est compiler. Or, transformer du Scheme en Scheme, c'est aussi traduire.
          Je conclus donc, malgré tes contraintes, que traduction et compilation ne sont pas indissociables.
      • [^] # Re: Pas une super definition...

        Posté par  . Évalué à 2.

        Dans le genre évalation partielle, je crois qu'il sait faire de la propagation de constante. Après je sais pas à quel point les deux sont liés :)
        • [^] # Re: Pas une super definition...

          Posté par  (site web personnel) . Évalué à 2.

          La propagation de constante est une évaluation partielle.
          Une des plus simples, que GCC sait déjà faire.
          Une autre, c'est l'inlining (remplacer un appel de fonction directement par le code de la fonction).

          Mais tout ça, c'est connu depuis Mathusalem.
          La recherche a continué, je me demande (en partie) à quel point les devs de GCC se sont penchés sur ces avancées là.
  • # video de la conf

    Posté par  . Évalué à 6.

    va t il y avoir une webcam ou un enregistrement video de la conf ?
    ca peut etre interessant vu les dimensions de la salle (et puis pour les personnes n'habitant pas paris)
  • # Espace Loisirs et Multimédia

    Posté par  (site web personnel) . Évalué à 2.

    L'an dernier, la première conf de Basile sur GCC à l'Espace Loisirs et Multimédia a fait salle comble : on était une quarantaine dans une pièce de 15m², les gens étaient partout jusqu'à assis à 1m50 du mur de projection. Les gens n'arrivaient même plus à rentrer dans la salle.

    Là je vois que les inscriptions sont déjà closes :-(

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.