Sortie de Gnu Bison 3.0

Posté par  . Édité par Xavier Teyssier et Benoît Sibaud. Modéré par Xavier Teyssier. Licence CC By‑SA.
Étiquettes : aucune
32
21
août
2013
GNU

GNU bison, communément appelé Bison, est le générateur d'analyseur syntaxique du Projet GNU. Bison lit les spécifications d'un langage, signale les ambiguïtés d'analyse, et génère un analyseur syntaxique (en C, C++ ou Java) qui lit chaque séquence de chaînes de caractères et décide si cette séquence est conforme à la syntaxe spécifiée par la grammaire. Bison génère par défaut un analyseur syntaxique LALR mais peut aussi créer un analyseur GLR.

Bison est un logiciel libre et est disponible sous licence GNU GPL version 3, avec une exception permettant au code généré de ne pas être lié à la clause de copyleft. GNU Bison 3.0 est sorti le 31 juillet dernier, apportant de nombreuses nouveautés décrites dans le second lien.

Note : cette dépêche est un travail dérivé de la page http://en.wikipedia.org/wiki/GNU_bison (auteurs) sous licence CC-BY-SA.

Aller plus loin

  • # Qu'est-ce qui est nouveau ?

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

    C'est sympa d'avoir des nouvelles de ces vieux outils GNU. Honnêtement je ne pensais pas qu'ils recevaient encore des mises à jours. Mais qu'est-ce qui est nouveau ici ? La dépêche présente le projet, nous dit qu'il y a une nouvelle version, mais ne nous dit pas ce qu'elle apporte.

    Et puis avec des petits exemples d'utilisation ce serait encore plus cool.

    • [^] # Re: Qu'est-ce qui est nouveau ?

      Posté par  . Évalué à 3.

      Je l'ai encore utilisé sur 2 projets cette année. Il n'est pas obsolète à mon avis. Cela dit, on m'a plusieurs fois recommandé ANTLR qui à l'air plus complet (supporte plus de langages cibles et de type de parseur) mais je ne l'ai pas encore essayé.

    • [^] # Re: Qu'est-ce qui est nouveau ?

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

      Voici quelques utilisateurs notables de Bison et voici les nouveautés: (i) deep overhaul/improvements of the diagnostics, (ii) more versatile means to describe semantic value types (including the ability to store genuine C++ objects in C++ parsers), (iii) push-parser interface extended to Java, and (iv) parse-time semantic predicates for GLR parsers - évidemment il faut être utilisateur d'analyseurs syntaxiques pour s'en émouvoir vraiment…

    • [^] # Re: Qu'est-ce qui est nouveau ?

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

      Et puis avec des petits exemples d'utilisation ce serait encore plus cool.

      et tu ne veux pas aussi une bière et des cacahuètes pendant que t'y es ? :)

      • [^] # Re: Qu'est-ce qui est nouveau ?

        Posté par  . Évalué à 10. Dernière modification le 21 août 2013 à 16:26.

        et tu ne veux pas aussi une bière et des cacahuètes pendant que t'y es ? :)

        je sais pas pour lui, mais je suis carrément partant, en fait :)

    • [^] # Re: Qu'est-ce qui est nouveau ?

      Posté par  . Évalué à 10.

      making of

      En fait cette dépêche a failli ne jamais exister, à vrai dire j'étais en train d'écrire un journal expliquant pourquoi je n'arrivais pas à l'écrire : impossible d'expliquer de façon concise comment fonctionne le logiciel, changelog imbitable pour quiconque ne connaît pas bison ou yacc… finalement je voulais conclure mon journal avec un lien vers wikipedia pour les curieux, et j'y ai trouvé ce qui m'a semblé le mieux formulé pour le public de linuxfr, donc je suis parti dans la rédaction d'une dépêche basée sur une traduction, en laissant des liens pour les plus curieux.

      Membre de l'april, et vous ? https://april.org/adherer -- Infini, l'internet libre et non commercial : https://infini.fr

    • [^] # Re: Qu'est-ce qui est nouveau ?

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

      C'est sympa d'avoir des nouvelles de ces vieux outils GNU. Honnêtement je ne pensais pas qu'ils recevaient encore des mises à jours.

      Pour quelle raison est-ce qu'il n'y aurait pas de mises à jours sur un vieux logiciel? Je ne vois pas trop ce que vient faire l'âge là dedans. Un projet avec 0 utilisateur, 0 utilisation ou 0 bug n'a pas besoin de mise à jour mais tous les autres, si!

      Par exemple si tu regardes les programmes de base dans /bin de FreeBSD (difficile de faire plus vieux et plus basique tout en étant toujours utilisé)

      http://svnweb.freebsd.org/base/stable/9/bin/

      Tu verras que même les commandes cp, mv etc. sont encore aujourd'hui mises à jour! (La première version de BSD est de 1988 et la première version FreeBSD est de 1994.)

      • [^] # Re: Qu'est-ce qui est nouveau ?

        Posté par  . Évalué à 9.

        Les vieux logiciels comme les nouveaux n'ont besoin de mise à jour que s'ils n'ont pas été écris par Donald Knuth.

        --->[]

      • [^] # Re: Qu'est-ce qui est nouveau ?

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

        Pour quelle raison est-ce qu'il n'y aurait pas de mises à jours sur un vieux logiciel? Je ne vois pas trop ce que vient faire l'âge là dedans. Un projet avec 0 utilisateur, 0 utilisation ou 0 bug n'a pas besoin de mise à jour mais tous les autres, si!

        Je me dis qu'un vieux logiciel complet, qui est encore utilisé, et qui n'a pas été remplacé par un petit nouveau tout brillant doit voir son nombre de bugs et de besoins diminuer. Hormis pour les projets qui tentent des réécritures complètes ou des fonctionnalités hors cadre, j'ai le sentiment que ça doit tendre vers le zéro bugs, zéro besoins avec le temps, non ?

        • [^] # Re: Qu'est-ce qui est nouveau ?

          Posté par  . Évalué à 3.

          j'ai le sentiment que ça doit tendre vers le zéro bugs, zéro besoins avec le temps, non ?

          Tout à fait. D'ailleurs si tu regardes comme suggéré "les programmes de base dans /bin de FreeBSD (difficile de faire plus vieux et plus basique tout en étant toujours utilisé)" tu le constates facilement. Une nouvelle fonctionnalité tous les 5 ans, le reste c'est de la maintenance impliqué par un environnement ou des pratiques qui bougent de temps en temps. Plus tu es bas niveau et indépendant, le cas de nos outils, plus c'est stable et figé. Plus tu es haut dans la pile logicielle, plus tu passes ton temps à maintenir le truc même avec zéro bugs et zéro besoin par ce que ton monde évolue en permanence.

          Bien sur ca ne marche que pour les briques logicielles extrêmement bien définie, et "petites". Dès que le scope est un peu plus large, ça ne se stabilise jamais ca fini par étouffer sous son poids et mourir.

        • [^] # Re: Qu'est-ce qui est nouveau ?

          Posté par  . Évalué à 4. Dernière modification le 23 août 2013 à 01:16.

          j'ai le sentiment que ça doit tendre vers le zéro bugs, zéro besoins avec le temps, non ?

          D'ailleurs ça m'avait frappé une fois, c'était je sais plus quelle distro à propos de je sais plus quel composant logiciel qui expliquait « Nous avons décidé de remplacé le composant A par tel autre, en effet, A est un très vieux logiciel, et il n'a pas reçu de mise à jour depuis 4 ans, et donc nous allons passé à B, bien plus actif »

          Traduction : « A fait tellement bien ce pour quoi il est fait qu'il n'y a plus besoin d'y toucher, donc nous allons changer pour B, un projet jeune, buggé, et dont le but est d'arriver à faire ce que fait A »

          Please do not feed the trolls

        • [^] # Re: Qu'est-ce qui est nouveau ?

          Posté par  (site web personnel) . Évalué à 8. Dernière modification le 23 août 2013 à 11:41.

          j'ai le sentiment que ça doit tendre vers le zéro bugs, zéro besoins avec le temps, non ?

          Au fil du temps, tu as des changements divers qui apparaissent et qui peuvent nécessiter des modifications plus ou moins légères du code: le 64 bits, l'IPv6, du TLS un peu partout, une libc remplacée par une autre, une bibliothèque qui change d'API ou d'ABI, une nouvelle architecture matérielle, un nouveau format de packaging, un systemd qui apparaît, une traduction dans une nouvelle langue, l'Unicode, etc. plein de choses qui dans l'idéal nécessite juste une modification légère et une recompilation en gros, qui dans le pratique peuvent s'avérer plus compliquées et surtout faire apparaître/dévoiler des bugs existants ou faire apparaître/ajouter de nouveaux bugs. Et si ces modifs ne sont pas faites, le code « vieillit » peu à peu, perd de son attrait, ne marche plus sur du matériel ou des systèmes récents, etc., bref se meurt. J'aurais plutôt tendance à dire que zéro besoin veut dire zéro utilisateur.

          Vous avez déjà vu souvent des systèmes de suivi des bugs complètement vidés ? Suffit de voir celui de LinuxFr :). En fait, c'est plutôt « la nature a horreur du vide » : plus les développeurs corrigent vite, plus les utilisateurs soumettent des demandes (« cool c'est pris en compte », « chouette je peux retester », habitude de revenir régulièrement, de suivre le projet, etc.). Moins les développeurs corrigent, moins les utilisateurs en soumettent (« ça sert à rien de signaler mon bug ils s'en foutent », personne ne va plus lire les bugs, mort lente, reste juste les spammeurs qui sont fidèles eux).

Suivre le flux des commentaires

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