]> git.saurik.com Git - bison.git/blobdiff - NEWS
maint: post-release administrivia
[bison.git] / NEWS
diff --git a/NEWS b/NEWS
index 3816fdd510dae9804d8f79a748582ed19daa3ed4..99a6e16cb1e0b32df942ded62c3b206e241a5b50 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,132 @@ GNU Bison NEWS
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
+
+* Noteworthy changes in release 3.0.4 (2015-01-23) [stable]
+
+** Bug fixes
+
+*** C++ with Variants (lalr1.cc)
+
+  Fix a compiler warning when no %destructor use $$.
+
+*** Test suites
+
+  Several portability issues in tests were fixed.
+
+* Noteworthy changes in release 3.0.3 (2015-01-15) [stable]
+
+** Bug fixes
+
+*** C++ with Variants (lalr1.cc)
+
+  Problems with %destructor and '%define parse.assert' have been fixed.
+
+*** Named %union support (yacc.c, glr.c)
+
+  Bison 3.0 introduced a regression on named %union such as
+
+    %union foo { int ival; };
+
+  The possibility to use a name was introduced "for Yacc compatibility".
+  It is however not required by POSIX Yacc, and its usefulness is not clear.
+
+*** %define api.value.type union with %defines (yacc.c, glr.c)
+
+  The C parsers were broken when %defines was used together with "%define
+  api.value.type union".
+
+*** Redeclarations are reported in proper order
+
+  On
+
+    %token FOO "foo"
+    %printer {} "foo"
+    %printer {} FOO
+
+  bison used to report:
+
+    /tmp/foo.yy:2.10-11: error: %printer redeclaration for FOO
+     %printer {} "foo"
+              ^^
+    /tmp/foo.yy:3.10-11:     previous declaration
+     %printer {} FOO
+              ^^
+
+  Now, the "previous" declaration is always the first one.
+
+
+** Documentation
+
+  Bison now installs various files in its docdir (which defaults to
+  '/usr/local/share/doc/bison'), including the three fully blown examples
+  extracted from the documentation:
+
+   - rpcalc
+     Reverse polish calculator, a simple introductory example.
+   - mfcalc
+     Multi-function Calc, a calculator with memory and functions and located
+     error messages.
+   - calc++
+     a calculator in C++ using variant support and token constructors.
+
+* Noteworthy changes in release 3.0.2 (2013-12-05) [stable]
+
+** Bug fixes
+
+*** Generated source files when errors are reported
+
+  When warnings are issued and -Werror is set, bison would still generate
+  the source files (*.c, *.h...).  As a consequence, some runs of "make"
+  could fail the first time, but not the second (as the files were generated
+  anyway).
+
+  This is fixed: bison no longer generates this source files, but, of
+  course, still produces the various reports (*.output, *.xml, etc.).
+
+*** %empty is used in reports
+
+  Empty right-hand sides are denoted by '%empty' in all the reports (text,
+  dot, XML and formats derived from it).
+
+*** YYERROR and variants
+
+  When C++ variant support is enabled, an error triggered via YYERROR, but
+  not caught via error recovery, resulted in a double deletion.
+
+* Noteworthy changes in release 3.0.1 (2013-11-12) [stable]
+
+** Bug fixes
+
+*** Errors in caret diagnostics
+
+  On some platforms, some errors could result in endless diagnostics.
+
+*** Fixes of the -Werror option
+
+  Options such as "-Werror -Wno-error=foo" were still turning "foo"
+  diagnostics into errors instead of warnings.  This is fixed.
+
+  Actually, for consistency with GCC, "-Wno-error=foo -Werror" now also
+  leaves "foo" diagnostics as warnings.  Similarly, with "-Werror=foo
+  -Wno-error", "foo" diagnostics are now errors.
+
+*** GLR Predicates
+
+  As demonstrated in the documentation, one can now leave spaces between
+  "%?" and its "{".
+
+*** Installation
+
+  The yacc.1 man page is no longer installed if --disable-yacc was
+  specified.
+
+*** Fixes in the test suite
+
+  Bugs and portability issues.
+
+* Noteworthy changes in release 3.0 (2013-07-25) [stable]
+
 ** WARNING: Future backward-incompatibilities!
 
   Like other GNU packages, Bison will start using some of the C99 features
 ** WARNING: Future backward-incompatibilities!
 
   Like other GNU packages, Bison will start using some of the C99 features
@@ -23,6 +149,26 @@ GNU Bison NEWS
   Missing semicolons at the end of actions are no longer added (as announced
   in the release 2.5).
 
   Missing semicolons at the end of actions are no longer added (as announced
   in the release 2.5).
 
+*** Use of YACC='bison -y'
+
+  TL;DR: With Autoconf <= 2.69, pass -Wno-yacc to (AM_)YFLAGS if you use
+  Bison extensions.
+
+  Traditional Yacc generates 'y.tab.c' whatever the name of the input file.
+  Therefore Makefiles written for Yacc expect 'y.tab.c' (and possibly
+  'y.tab.h' and 'y.outout') to be generated from 'foo.y'.
+
+  To this end, for ages, AC_PROG_YACC, Autoconf's macro to look for an
+  implementation of Yacc, was using Bison as 'bison -y'.  While it does
+  ensure compatible output file names, it also enables warnings for
+  incompatibilities with POSIX Yacc.  In other words, 'bison -y' triggers
+  warnings for Bison extensions.
+
+  Autoconf 2.70+ fixes this incompatibility by using YACC='bison -o y.tab.c'
+  (which also generates 'y.tab.h' and 'y.output' when needed).
+  Alternatively, disable Yacc warnings by passing '-Wno-yacc' to your Yacc
+  flags (YFLAGS, or AM_YFLAGS with Automake).
+
 ** Bug fixes
 
 *** The epilogue is no longer affected by internal #defines (glr.c)
 ** Bug fixes
 
 *** The epilogue is no longer affected by internal #defines (glr.c)
@@ -42,6 +188,8 @@ GNU Bison NEWS
   Changes in Bison 2.7 introduced a dependency on FILE and fprintf when
   locations are enabled.  This is fixed.
 
   Changes in Bison 2.7 introduced a dependency on FILE and fprintf when
   locations are enabled.  This is fixed.
 
+*** Warnings about useless %pure-parser/%define api.pure are restored
+
 ** Diagnostics reported by Bison
 
   Most of these features were contributed by Théophile Ranquet and Victor
 ** Diagnostics reported by Bison
 
   Most of these features were contributed by Théophile Ranquet and Victor
@@ -236,6 +384,23 @@ GNU Bison NEWS
 
     %param {arg1_type *arg1} {arg2_type *arg2}
 
 
     %param {arg1_type *arg1} {arg2_type *arg2}
 
+** Types of values for %define variables
+
+  Bison used to make no difference between '%define foo bar' and '%define
+  foo "bar"'.  The former is now called a 'keyword value', and the latter a
+  'string value'.  A third kind was added: 'code values', such as '%define
+  foo {bar}'.
+
+  Keyword variables are used for fixed value sets, e.g.,
+
+    %define lr.type lalr
+
+  Code variables are used for value in the target language, e.g.,
+
+    %define api.value.type {struct semantic_type}
+
+  String variables are used remaining cases, e.g. file names.
+
 ** Variable api.token.prefix
 
   The variable api.token.prefix changes the way tokens are identified in
 ** Variable api.token.prefix
 
   The variable api.token.prefix changes the way tokens are identified in
@@ -243,7 +408,7 @@ GNU Bison NEWS
   with identifiers in the target language.  For instance
 
     %token FILE for ERROR
   with identifiers in the target language.  For instance
 
     %token FILE for ERROR
-    %define api.token.prefix "TOK_"
+    %define api.token.prefix {TOK_}
     %%
     start: FILE for ERROR;
 
     %%
     start: FILE for ERROR;
 
@@ -274,11 +439,13 @@ GNU Bison NEWS
     yylval.ival = 42; return INT;
     yylval.sval = "42"; return STRING;
 
     yylval.ival = 42; return INT;
     yylval.sval = "42"; return STRING;
 
-  The %define variable api.value.type supports several special values.  The
-  value "union" means that the user provides genuine types, not union member
-  names such as "ival" and "sval" above.
+  The %define variable api.value.type supports both keyword and code values.
+
+  The keyword value 'union' means that the user provides genuine types, not
+  union member names such as "ival" and "sval" above (WARNING: will fail if
+  -y/--yacc/%yacc is enabled).
 
 
-    %define api.value.type "union"
+    %define api.value.type union
     %token <int> INT "integer"
     %token <char *> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <int>
     %token <int> INT "integer"
     %token <char *> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <int>
@@ -288,15 +455,15 @@ GNU Bison NEWS
     yylval.INT = 42; return INT;
     yylval.STRING = "42"; return STRING;
 
     yylval.INT = 42; return INT;
     yylval.STRING = "42"; return STRING;
 
-  The value "variant" is somewhat equivalent, but for C++ special provision
-  is made to allow classes to be used (more about this below).
+  The keyword value variant is somewhat equivalent, but for C++ special
+  provision is made to allow classes to be used (more about this below).
 
 
-    %define api.value.type "variant"
+    %define api.value.type variant
     %token <int> INT "integer"
     %token <std::string> STRING "string"
 
     %token <int> INT "integer"
     %token <std::string> STRING "string"
 
-  Any other name is a user type to use.  This is where YYSTYPE used to be
-  used.
+  Code values (in braces) denote user defined types.  This is where YYSTYPE
+  used to be used.
 
     %code requires
     {
 
     %code requires
     {
@@ -313,7 +480,7 @@ GNU Bison NEWS
         } u;
       };
     }
         } u;
       };
     }
-    %define api.value.type "struct my_value"
+    %define api.value.type {struct my_value}
     %token <u.ival> INT "integer"
     %token <u.sval> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <u.ival>
     %token <u.ival> INT "integer"
     %token <u.sval> STRING "string"
     %printer { fprintf (yyo, "%d", $$); } <u.ival>
@@ -475,11 +642,13 @@ GNU Bison NEWS
 
 ** Java skeleton improvements
 
 
 ** Java skeleton improvements
 
-  Contributed by Paolo Bonzini.
-
   The constants for token names were moved to the Lexer interface.  Also, it
   is possible to add code to the parser's constructors using "%code init"
   and "%define init_throws".
   The constants for token names were moved to the Lexer interface.  Also, it
   is possible to add code to the parser's constructors using "%code init"
   and "%define init_throws".
+  Contributed by Paolo Bonzini.
+
+  The Java skeleton now supports push parsing.
+  Contributed by Dennis Heimbigner.
 
 ** C++ skeletons improvements
 
 
 ** C++ skeletons improvements
 
@@ -548,6 +717,21 @@ GNU Bison NEWS
       ...
     }
 
       ...
     }
 
+*** C++ locations
+
+  There are operator- and operator-= for 'location'.  Negative line/column
+  increments can no longer underflow the resulting value.
+
+* Noteworthy changes in release 2.7.1 (2013-04-15) [stable]
+
+** Bug fixes
+
+*** Fix compiler attribute portability (yacc.c)
+
+  With locations enabled, __attribute__ was used unprotected.
+
+*** Fix some compiler warnings (lalr1.cc)
+
 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
 ** Bug fixes
 * Noteworthy changes in release 2.7 (2012-12-12) [stable]
 
 ** Bug fixes
@@ -2567,7 +2751,7 @@ Output file does not redefine const for C++.
 
 -----
 
 
 -----
 
-Copyright (C) 1995-2013 Free Software Foundation, Inc.
+Copyright (C) 1995-2015 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Parser Generator.
 
 
 This file is part of Bison, the GNU Parser Generator.