bug-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bison 3.8.1 released


From: Geoffrey S. Knauth
Subject: Re: Bison 3.8.1 released
Date: Sat, 11 Sep 2021 17:51:48 -0400

Thank you!

Geoff Knauth (mobile)

> On Sep 11, 2021, at 16:39, Akim Demaille <akim@lrde.epita.fr> wrote:
> 
> Hi,
> 
> I'm very pleased to announce the release of Bison 3.8(.1), whose main
> novelty is the D backend for deterministic parsers, contributed by
> Adela Vais.  It supports all the bells and whistles of Bison's other
> deterministic parsers, which include: pull/push interfaces, verbose
> and custom error messages, lookahead correction, LALR(1), IELR(1),
> canonical LR(1), token constructors, internationalization, locations,
> printers, token and symbol prefixes, and more.
> 
> There are several other notable changes.  Please see the detailed NEWS
> below for more details.
> 
> Cheers!
> 
> ==================================================================
> 
> Here are the compressed sources:
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.gz   (6.1MB)
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.lz   (3.1MB)
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.xz   (3.1MB)
> 
> Here are the GPG detached signatures[*]:
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.gz.sig
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.lz.sig
>  https://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.xz.sig
> 
> Use a mirror for higher download bandwidth:
>  https://www.gnu.org/order/ftp.html
> 
> Here are the SHA1 and SHA256 checksums:
> 
> 79e97c868475c0e20286d62021f2a7cfd20610f7  bison-3.8.1.tar.gz
> zjGKRxlhVft8JpErUTEC89DhR1fC5JXjRgh1e2EznFw  bison-3.8.1.tar.gz
> e7fe4142c22ac5353ec4416652a56e9da951ffa5  bison-3.8.1.tar.lz
> AJ2nWoBj4aO9IVRrN+UkISBWiR/CySr6EanzlphoIbg  bison-3.8.1.tar.lz
> 9772ea3130d6cbddaefe29a659698775a5701394  bison-3.8.1.tar.xz
> MfxgJIiq1r3s8MzFVuD8cvxXzcWVz5I5jwIODPSYDxU  bison-3.8.1.tar.xz
> 
> The SHA256 checksum is base64 encoded, instead of the
> hexadecimal encoding that most checksum tools default to.
> 
> [*] Use a .sig file to verify that the corresponding file (without the
> .sig suffix) is intact.  First, be sure to download both the .sig file
> and the corresponding tarball.  Then, run a command like this:
> 
>  gpg --verify bison-3.8.1.tar.gz.sig
> 
> If that command fails because you don't have the required public key,
> then run this command to import it:
> 
>  gpg --keyserver keys.gnupg.net --recv-keys 0DDCAA3278D5264E
> 
> and rerun the 'gpg --verify' command.
> 
> This release was bootstrapped with the following tools:
>  Autoconf 2.71
>  Automake 1.16b
>  Flex 2.6.4
>  Gettext 0.20.1.153-6c39c
>  Gnulib v0.1-4853-g964ce0a92
> 
> ==================================================================
> 
> GNU Bison is a general-purpose parser generator that converts an annotated
> context-free grammar into a deterministic LR or generalized LR (GLR) parser
> employing LALR(1) parser tables.  Bison can also generate IELR(1) or
> canonical LR(1) parser tables.  Once you are proficient with Bison, you can
> use it to develop a wide range of language parsers, from those used in
> simple desk calculators to complex programming languages.
> 
> Bison is upward compatible with Yacc: all properly-written Yacc grammars
> work with Bison with no change.  Anyone familiar with Yacc should be able to
> use Bison with little trouble.  You need to be fluent in C, C++, D or Java
> programming in order to use Bison.
> 
> Bison and the parsers it generates are portable, they do not require any
> specific compilers.
> 
> GNU Bison's home page is https://gnu.org/software/bison/.
> 
> ==================================================================
> 
> NEWS
> 
> * Noteworthy changes in release 3.8.1 (2021-09-11) [stable]
> 
>  The generation of prototypes for yylex and yyerror in Yacc mode is
>  breaking existing grammar files.  To avoid breaking too many grammars, the
>  prototypes are now generated when `-y/--yacc` is used *and* the
>  `POSIXLY_CORRECT` environment variable is defined.
> 
>  Avoid using `-y`/`--yacc` simply to comply with Yacc's file name
>  conventions, rather, use `-o y.tab.c`.  Autoconf's AC_PROG_YACC macro uses
>  `-y`.  Avoid it if possible, for instance by using gnulib's gl_PROG_BISON.
> 
> 
> * Noteworthy changes in release 3.8 (2021-09-07) [stable]
> 
> ** Backward incompatible changes
> 
>  In conformance with the recommendations of the Graphviz team
>  (https://marc.info/?l=graphviz-devel&m=129418103126092), `-g`/`--graph`
>  now generates a *.gv file by default, instead of *.dot.  A transition
>  started in Bison 3.4.
> 
>  To comply with the latest POSIX standard, in Yacc compatibility mode
>  (options `-y`/`--yacc`) Bison now generates prototypes for yyerror and
>  yylex.  In some situations, this is breaking compatibility: if the user
>  has already declared these functions but with some differences (e.g., to
>  declare them as static, or to use specific attributes), the generated
>  parser will fail to compile.  To disable these prototypes, #define yyerror
>  (to `yyerror`), and likewise for yylex.
> 
> ** Deprecated features
> 
>  Support for the YYPRINT macro is removed. It worked only with yacc.c and
>  only for tokens.  It was obsoleted by %printer, introduced in Bison 1.50
>  (November 2002).
> 
>  It has always been recommended to prefer `%define api.value.type foo` to
>  `#define YYSTYPE foo`.  The latter is supported in C for compatibility
>  with Yacc, but not in C++.  Warnings are now issued if `#define YYSTYPE`
>  is used in C++, and eventually support will be removed.
> 
>  In C++ code, prefer value_type to semantic_type to denote the semantic
>  value type, which is specified by the `api.value.type` %define variable.
> 
> ** New features
> 
> *** A skeleton for the D programming language
> 
>  The "lalr1.d" skeleton is now officially part of Bison.
> 
>  It was originally contributed by Oliver Mangold, based on Paolo Bonzini's
>  lalr1.java, and was improved by H. S. Teoh.  Adela Vais then took over
>  maintenance and invested a lot of efforts to complete, test and document
>  it.
> 
>  It now supports all the bells and whistles of the other deterministic
>  parsers, which include: pull/push interfaces, verbose and custom error
>  messages, lookahead correction, token constructors, internationalization,
>  locations, printers, token and symbol prefixes, etc.
> 
>  Two examples demonstrate the D parsers: a basic one (examples/d/simple),
>  and an advanced one (examples/d/calc).
> 
> *** Option -H, --header and directive %header
> 
>  The option `-H`/`--header` supersedes the option `--defines`, and the
>  directive %header supersedes %defines.  Both `--defines` and `%defines`
>  are, of course, maintained for backward compatibility.
> 
> *** Option --html
> 
>  Since version 2.4 Bison can be used to generate HTML reports.  However it
>  was a two-step process: first bison must be invoked with option `--xml`,
>  and then xsltproc must be run to the convert the XML reports into HTML.
> 
>  The new option `--html` combines these steps.  The xsltproc program must
>  be available.
> 
> *** A C++ native GLR parser
> 
>  A new version of the C++ GLR parser was added: "glr2.cc".  It generates
>  "true C++11", instead of a C++ wrapper around a C parser as does the
>  existing "glr.cc" parser.  As a first significant consequence, it supports
>  `%define api.value.type variant`, contrary to glr.cc.
> 
>  It should be upward compatible in terms of interface, feature and
>  performance to "glr.cc". To try it out, simply use
> 
>  %skeleton "glr2.cc"
> 
>  It will eventually replace "glr.cc".  However we need user feedback on
>  this skeleton.  _Please_ report your results and comments about it.
> 
> *** Counterexamples
> 
>  Counterexamples now show the rule numbers, and always show ε for rules
>  with an empty right-hand side.  For instance
> 
>    exp
>    ↳ 1: e1       e2     "a"
>         ↳ 3: ε • ↳ 1: ε
> 
>  instead of
> 
>    exp
>    ↳ e1  e2  "a"
>      ↳ • ↳ ε
> 
> *** Lookahead correction in Java
> 
>  The Java skeleton (lalr1.java) now supports LAC, via the `parse.lac`
>  %define variable.
> 
> *** Abort parsing for memory exhaustion (C)
> 
>  User actions may now use `YYNOMEM` (similar to `YYACCEPT` and `YYABORT`)
>  to abort the current parse with memory exhaustion.
> 
> *** Printing locations in debug traces (C)
> 
>  The `YYLOCATION_PRINT(File, Loc)` macro prints a location.  It is defined
>  when (i) locations are enabled, (ii) the default type for locations is
>  used, (iii) debug traces are enabled, and (iv) `YYLOCATION_PRINT` is not
>  already defined.
> 
>  Users may define `YYLOCATION_PRINT` to cover other cases.
> 
> *** GLR traces
> 
>  There were no debug traces for deferred calls to user actions.  They are
>  logged now.
> 
> 
> -- 
> If you have a working or partly working program that you'd like
> to offer to the GNU project as a GNU package,
> see https://www.gnu.org/help/evaluation.html.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]