flex NEWS * Noteworthy changes in release ?.? (????-??-??) [?] ** build *** The version and date in the header of each release's section of this NEWS file, and the version in configure.ac, are now set together by a script when the release is made. A release candidate gets its own header in the same way. *** Regenerating the build files now needs gettext 0.23 or later. The po/ directory can then be built in parallel with make -j. Building from a release tarball is not affected. *** A new script, tools/bootstrap-flex, builds and installs the previous release of flex. Building flex from a git checkout needs a flex that is already installed, and the script lets a system without one get started. *** Building flex no longer rewrites the .po translation files. *** A race condition that could build flex twice at the same time during a parallel make has been fixed. *** Source files now carry SPDX license identifiers. Thanks to Tuukka Pasanen. *** The replacement malloc in lib/ now has a full prototype. Thanks to Richard Barnes. *** Automated builds now run on GitHub Actions instead of travis-ci, and nightly distribution tarballs are built there. Thanks to Joseph Langley. *** The configure script accepts the space that AC_PROG_LEX puts before the parentheses when checking for yymore and yyreject. It also no longer uses obsolete Autoconf macros, and the macro that finds the C compiler for the build machine has been updated to fix problems with executable file names when cross compiling. Thanks to Bill Currie and Kang-Che Sung. *** The man page can now be built when cross compiling, including on MS Windows. (#560) *** Various edge cases, mostly involving out-of-tree builds have been accounted for in the autotools build system. Thanks to Michael Haubenwallner and Kang-Che Sung. *** The build now has flex build its own scanner a second time and fails if the result differs from the first. This check runs only for native builds. Thanks to Kang-Che Sung. *** The GitHub Actions workflows now use pinned versions of the actions, have read-only permissions, and are kept up to date by dependabot. Thanks to Pedro Kaj Kjellerup Nacht. *** The minimum versions of the Autotools needed to build flex are now correct and documented, and autogen.sh is more reliable in finding libtoolize. Thanks to Kang-Che Sung. *** Flex no longer searches PATH for m4 itself and leaves that to the system. This avoids a failure on 32-bit systems that read file systems with 64-bit inode numbers. (#413) Thanks to Kang-Che Sung. *** Flex no longer declares reallocarray() itself. Thanks to Lukasz Baj. *** Flex now includes its own header before including system headers so that any system specific features detected by configure are taken into account during compilation of flex itself. Thanks to Kang-Che Sung. *** The flex build system now includes Makefile targets at the top level to allow just building and installing libfl. Thanks to Kang-Che Sung. *** The flex distribution now includes a file, src/libfl.pc, to allow using pkgconfig to find out what flags to use when building against libfl from flex. Thanks to Tyler Slabinski and Kang-Che Sung. *** The skeleton files are now generated correctly on systems whose files use CRLF line endings. Thanks to Jannick. *** A crash during building on NetBSD has been fixed. Thanks to Thomas Klausner. ** documentation *** Several examples in the manual have been corrected or modernized: character classes, case-insensitive ranges, the patterns for C and C++ comments, the Bison snippets, and a call to yylex_init_extra(). Thanks to Joseph Langley, Martin Joerg, zmajeed, Akim Demaille and Nikolaos Chatzikonstantinou. *** Typos in the manual and the README have been fixed. Thanks to Houtan Bastani, Xiao Hanyu, winter.loo, musvaage and 6NoFantasy9. *** INSTALL is now INSTALL.md and has updated instructions. There is a new CONTRIBUTING.md, and the README now describes how to use the mailing list and where to find releases. Thanks to Joseph Langley and Simon Sobisch. *** New bg, ka, lv, pt, uk translations from the Translation Project. *** Updated ca, da, de, eo, es, fi, fr, ga, hr, ko, nl, pl, pt_BR, ro, ru, sr, sv, tr, vi, zh_CN, zh_TW translations from the Translation Project. *** The --yymore option is now documented. Thanks to ggujjula. *** The manual now describes how to retarget flex to other languages and lists the deprecated interfaces and their replacements. Thanks to Eric S. Raymond and Daniel Brooks. *** The flex manual is now on the web at https://westes.github.io/flex/manual/, split into one page per section, and as a single page at https://westes.github.io/flex/manual-single.html. General information about flex is at https://westes.github.io/flex/. The site is rebuilt from the flex sources for each release. ** scanner *** yy_scan_string() and yy_scan_bytes() no longer write outside the buffer they allocate when the input is too long for an int, or when the length given to yy_scan_bytes() is negative. They now stop with the fatal error "string too long for yy_scan_string()" or "negative length in yy_scan_bytes()". Input longer than an int can hold was never supported; before, it could corrupt the heap. (#446, #664) Thanks to anshal ossaimi. *** A scanner file could run commands while flex was running by putting m4 macros in the values of options such as outfile, header-file, yydecl, user-init, pre-action and post-action. Flex now passes those values through as plain text, and rejects the characters '[' and ']' in them, in the output and header file names, in the class name given to yyclass, and in the prefix. (#728) Thanks to MarkLee131. *** The --skel (-S) option again makes flex read the skeleton file it names. Flex had been accepting the option but using its built-in skeleton anyway. *** Scanners that use REJECT no longer write past the end of their state buffer when a buffer larger than the default is installed with yypush_buffer_state() and a long token is then scanned. (#752) Thanks to anshal ossaimi. *** C++ scanners that use REJECT now allocate their state buffer with yyalloc() and release it with yyfree(), as C scanners do. Before, switching to an input buffer larger than the default could pass memory obtained with new[] to yyrealloc(), and a scanner that defines its own yyalloc(), yyrealloc() and yyfree() received a pointer its yyalloc() had never returned. (#751) Thanks to anshal ossaimi. *** Flex no longer writes one byte past the end of a buffer when the name of the output file given with -o is very long and contains enough backslashes or double quotes. (#749) Thanks to ReisterJ. *** The messages Flex prints are easier to translate, and more of them are offered to the Translation Project. The --help text is split into several messages. Words that must not be translated, such as option and keyword names, are no longer part of the messages. The statistics printed by -v and the dumps printed in debug mode are no longer marked for translation, so they appear in English. The messages in five source files that were never offered for translation now are, and the word "warning" at the start of each warning is translated. Seven short error messages, such as "premature EOF" and "bad character class", now say what is wrong. *** The --help text showed the -T option as --env.trace, and the message about using -l with --reentrant called that option --ctrl.reentrant. Both now show the right option names. *** Scanners generated with --tables-file or --tables-verify now check the tables file they read at run time. A damaged or hostile file could make such a scanner read outside its memory, write outside it, or ask for a huge amount of it. Now yytables_fload() returns -1 for such a file. A scanner that is already built is not changed, so it must be generated again with this version of Flex. (#730) Thanks to MarkLee131. *** With %array, a switch to another input buffer now ends the text saved by yymore(), as it does with %pointer. Before, calling yyless() with a count shorter than that text after the switch could move the scanner to before the start of the new buffer. *** With %array, calling yyless() with a count shorter than the text saved by yymore() now returns the rest of that text to the input, as it does with %pointer. Before, that text was dropped and never scanned again. With yylineno, the newlines in it are counted once. *** With %option yylineno, a newline matched by the default rule is now counted in yylineno. Before, yylineno did not change when the default rule matched a newline. (#397) Thanks to ggujjula; reported by Horst H. von Brand. *** With %array, calling yyless() after yymore() could write past the end of the input buffer. This has been fixed. Thanks to anshal ossaimi. *** A heap buffer overflow that could happen when flex_main() was called more than once in the same process has been fixed. Thanks to David Pokora of Trail of Bits, in collaboration with Anthropic. *** Flex no longer puts #line directives from %top blocks into the output when --noline or %option noline is given. (#463, #268) Thanks to Javier Maestro. *** A bug in how yylex_destroy() frees the buffer stack has been fixed. Thanks to Wiktor Garbacz. *** Refilling the input buffer is a little faster. Thanks to John Lindal. *** When the input buffer is grown, the new size now always includes room for the final two end-of-buffer characters. Thanks to David Lamparter. *** Generated scanners now compile without warnings in more situations, for example with -Wextra-semi-stmt (#416), -Wundef, -Wnull-dereference (#377), when yyunput is disabled, and when comparing sizes. Thanks to Sean McBride, Alex Richardson, Kang-Che Sung and Bill Currie. *** The error message for a file that cannot be opened now includes the system's reason. Thanks to Ryan McCullagh. *** Some memory leaks have been fixed. Thanks to viktor.shepel and Kang-Che Sung. *** Scanners generated with the --full option no longer allocate table space that is never used. (#628) Thanks to Joseph Langley. *** Line numbers in #line directives were off by one after an indented code block in the rules section. This has been fixed. Thanks to Bill Currie. *** A leftover reference to the old location of the line directive template in the output filter was corrected. Thanks to Burke Libbey. *** A crash while starting m4 on Apple M1 has been fixed. (#539) Thanks to Yifeng Li. *** Scanners now fail with an error, rather than misbehaving, when yy_get_next_buffer() cannot find a buffer. (#525) Thanks to Joseph Langley. *** The generated header flexint_shared.h can now be included twice without errors (#329), and it uses when compiled as C++11 or later. (#517) Thanks to Kang-Che Sung. *** New options: --noinput and --noyyinput, --noyyget_debug and --noyyset_debug. The existing --nounput can now also be written --noyyunput. Thanks to ggujjula and Eric S. Raymond. *** Scanners that call yy_switch_to_buffer() with REJECT now always have a large enough state buffer. Thanks to Joseph Langley. *** There are new function style interfaces to replace those that relied on C macros: yybegin(), yyecho(), yyreject(), yyinput(), yyunput(), yystart(), yyatbol(), yysetbol() and yypanic(). Macros that you used to define yourself are replaced by options: yydecl, yylmax, noyyread, extra-type, user-init, pre-action, post-action and bufsize. The old interfaces still work with the default back end but are deprecated, as is YY_FLEX_SUBMINOR_VERSION. The manual lists the replacements. Thanks to Eric S. Raymond. *** Flex can now generate scanners in other languages. The new option -e, --emit (also %option emit) selects a back end. The default back end generates C or C++ as before. A new C99 back end generates only reentrant scanners and drops the legacy interfaces. The new %option rewrite controls whether calls to the function style interfaces below are rewritten for back ends that cannot rely on the C preprocessor. Thanks to Eric S. Raymond. *** Generated scanners no longer need a separate table for NUL transitions. Thanks to Nick Downing. *** The indentation in the skeleton has been corrected. Thanks to Joerg Sonnenberger. *** YYTABLES_NAME is no longer defined unless tables are requested. Thanks to Jannick. *** yy_top_state() now returns the current start condition when the start condition stack is empty, including in reentrant scanners. Thanks to Jannick. *** An option argument can now be "--", as in "flex --outfile -- file". (#285) Thanks to Kang-Che Sung. *** Memory for filters is now allocated with calloc. Thanks to Michael W. Bombardieri. *** A long standing bug that effected expressions of the form c{i,j} where 'c' is a character and {i,j} describes the number of times to match against 'c' when case sensitivity was turned on has been fixed. Thanks to NieDzejkob. *** New option: --backup-file allows setting the name of the file written containing backing up information. Useful if you need backing up information from multiple scanners in the same directory. Thanks to EricSharkey. *** flex emits correct line number directives when line numbers refer to the file containing the line number directives. Thanks to Jeff Smith. *** The options {no,}yy{get,set}_column are now supported. ** test *** The test suite now works in VPATH builds, and the test programs it generates are ignored by git. Thanks to Joseph Langley. *** The test suite no longer fails to build when many jobs run in parallel and finish in an unlucky order, because the parser objects now depend on the scanner headers they include. Thanks to Ross Burton. *** The shell scripts in the repository have been cleaned up using shellcheck. Thanks to Daniel Brooks. *** Many tests are now generated from *.rules files, so that each one runs against every back end. When running "make check", you can set TESTOPTS to pass options to flex. Thanks to Eric S. Raymond. *** Generating the various tableoptions make rules is now more portable. Thanks to Kang-Che Sung. *** Tests of the options -C*f and -C*F will now run correctly on filesystems that are not case sensitive. Thanks to Hans-Bernhard Broeker. * Noteworthy changes in release 2.6.4 (2017-05-06) [stable] ** build *** The indent target now knows about flex's new (as of 2.6.0) layout. The indent rules it would apply are not correct and do need to be fixed. *** The files included in the flex distribution are now built by the version of flex that is included in the distribution. *** The configure script has a better idea of which headers are required to build flex. It will also error when missing functions are detected. *** We have lowered the versions of automake and gettext that configure.ac lists as required for building flex. In autogen.sh, we now check for how to call libtoolize and use what we find in the rest of the script. *** Since files in lib/ are picked up as needed by src/, we no longer generate a Makefile for that directory. *** Flex can be cross compiled. ** documentation *** Some typos were removed from the manual. ** scanner *** Some minor performance enhancements. *** We honor user defined yy_* macros again. We are also more careful to not leak macro definitions into header files. *** A number of portability fixes were introduced so building flex is more reliable on more platforms. Additionally, outdated function calls were removed. *** When building the flex executable itself, %# comments from flex.skl are removed when generating the C source code array. This reduces the size of flex. ** test suite *** All scripts in the test suite are now run by $(SHELL) and the needed portability fixes have been included. *** Test suite dependencies are handled much better. This only matters if you are actively developing flex or its test suite. *** Tests that depend on platform dependent features now properly skip when those platforms are not present. *** When running "make check", you can now pas V=0 to silence more of the build. This is useful when you're less concerned about the details of building and linking the test programs themselves. * Noteworthy changes in release 2.6.3 (2016-12-30) [stable] ** scanner *** several bug fixes resolved problems introduced in recent flex versions regarding processing of comments, literals and various quoting scenarios. *** If the path to m4 was sufficiently long, a buffer overflow could occur. This has been resolved. The fix also removes dependence on the constant PATH_MAX. ** build *** A new configure option --disable-bootstrap changes the behavior of the build system when building flex. The default "--enable-bootstrap" behavior is to build flex, then to use that flex to build flex again. With --disable-bootstrap, the scanner is simply built by sedding the scanner source. This is friendlier to cross compilation. *** The compatibility functions in lib/ are no longer built as a library. Instead, they are built as $(LIBOBJ) objects. This is simpler and friendlier to cross compilation. *** It is now possible to build flex without building the accompanying libfl. This is friendlier to cross compilation. See the --disable-libfl option to configure. Resolves #99. *** the PIC version of libfl was not correctly built. It is no longer included in the build/installation targets of flex since it was unused. *** the distributed man page is only rebuilt when the relevant source files change or when the binary doesn't exist. In particular, this is friendlier to cross compilation. Resolves #108 ** test *** the shell scripts in the test suite are more portable across different shell implementations. * version 2.6.2 released 2016-10-24 ** flex internals *** a segfault involving yyrestart(NULL) has been fixed *** flex should now handle quoting when mixed with m4 processing correctly *** flex handles `[[' and `]]' correctly *** flex no longer generates non-ANSI code *** more compilation warnings were squashed in generated scanners *** prevented a buffer overflow that could occur when input buffers were the exact wrong size ** test suite *** input filenames on MSWindows are now calculated correctly *** general code cleanups in a number of tests now make the test suite compile much more cleanly ** build system *** the xz archive has been replaced with an lzip archive *** a new option to configure --enable-warnings to encapsulate passing of warning-related flags which is useful in testing flex *** make indent now works for out of source builds *** Portability warnings when generating Makefile.in files are now suppressed; they were just noise and the use of GNU extensions in Makefile.{am,in,} was intentional and well known. ** bugs *** resolved gh#67 ** new sv translation from the translation project * version 2.6.1 released 2016-03-01 ** flex resources *** The flex project is now hosted at github. Consider this a "period of transition". In particular, you should start at https://github.com/westes/flex for the flex codebase, issue tracking and pull requests. *** New releases of flex are to be found at https://github.com/westes/flex/releases. ** flex internals *** Flex now uses more modern and more standard names for variable types. There's more work to be done on that front yet, though. *** A number of compiler warnings have been remedied. *** Line directives should now work as expected and be absent when that is expected. ** test suite *** When running the test suite, c++ files are compiled with the c++ header inside the flex distribution, rather than relying on the build system's flex header , which might not be installed yet or which might be out of date with respect to what flex tests expect. *** Some portability fixes in the test suite such as opening files for reading in binary mode ** Building flex *** The file src/scan.c asdistributed with flex source is now built with the current version of flex. Occasionally this had to be done manually to pick up new flex features. It's now just a part of flex's build system. *** The pdf version of the manual is no longer distributed with flex, although if you have the texinfo package installed, you can still build it. *** lots of general build system cleanup *** the build system tries a bit harder to find libtoolize and texi2dvi. *** When help2man and texi2dvi are missing, the error messages are now much more helpful. ** bug fixes *** resolved github issues #53, #54, #55, #61. *** Resolved sf bugs #128, #129, #155, #160, #184, #187, #195. * version 2.6.0 released 2015-11-17 ** User Visible Changes *** C++ scanners now use references instead of pointers. See the manual for details. *** A number of compiler warnings were addressed, so flex generated scanners should be quieter under compiler warning scenarios. *** Allow error reporting routines to accept varying number of arguments *** Removed deprecated 'register' storage class specifier *** Changed output formats from octal to hexadecimal *** check limits before using array index cclp; resolves sf-166 *** Suppress clang warning about empty @param paragraph; resolves sf#158 *** Fixed malloc/realloc replacement, resolves sf bug#151. *** Adjusted buffer sizes on ia64. *** various documentation and code clean up fixes: resolves sf bugs #167, #168, among other patches. ** Flex Internals *** flex is now organized into subdirectories. This keeps the tree neater at the top level and puts like things near each other and unlike things away from each other. *** The test suite has been reorganized and is now run with the parallel test suite harness from automake. *** Cleaned up the automake parts of the build system to better reflect what automake does on its own. Also added a call to libtoolize in autogen.sh because autoreconf gets confused without a prior run of libtoolize. *** po/Makefile now includes a rule to fetch the latest translations from the translation project. "make -f po/Makefile getpo" from the top level of the flex tree will fetch the files. *** New da translation from the translation project * flex version 2.5.39 released 2014-03-26 ** no user visible changes in this release * version 2.5.38 released 2014-02-14 ** internationalization *** add sr translation from the translation project *** update da, es, ko, nl, pt_BR, ro, ru, sv, tr, vi, zh_CN translations from the translation project *** rename zh_tw to its proper zh_TW name * version 2.5.37 released 2012-08-03 ** Import flex into git. See git://flex.git.sourceforge.net/gitroot/flex/flex. ** Fix make install target to not fail when the flex++ program is already installed ** New translations from the translation project: de, fi, pl, vi * version 2.5.36 released 2012-07-20 ** various portability fixes that quiet compiler warnings on 64-bit hosts ** various manual fixes, including correcting the name of a %option and updating some simple examples to use ANSI C syntax ** various bug fixes that prevent certain error conditions from persisting when they should not persist ** improvements to the test suite so it behaves better when linking compiled files ** new translations from the translation project: ca, da, es, fi, fr, ga, ko, pt_br, ro, ru, sv, tr, zh_cn ** the flex distribution is now built with automake 1.10.1 and automake 2.61 * version 2.5.35 released 2008-02-26 ** fixed bug that prevented flex from accepting certain comments in the scanner file (resolves bugs #1849809 and #1849805) ** fix bug that prevented headers for all functions from being generated (resolves bug #1628314) ** change yy_size_t to be size_t (resolves bug #1849812) ** new de, nl, pl, pt_br, vi translations from the translation project * version 2.5.34 released 2007-12-12 ** introduce yylex_init_extra; see the manual for details ** introduce %option extra-type="your_type *" (resolves bug #1744505) ** The flex program now parses multiple short concatenated options (resolves bug #1619820). Thanks to Petr Machata of Red Hat on this issue. ** better checking after yyalloc/yyrealloc (resolves bug #1595967) ** flex now provides for a libfl_pic.a compiled with position independent code. Particularly useful when including a flex scanner in a shared library and with more recent versions of gcc. Thanks to the Debian project for the idea. ** SourceForge feature request #1658379: Expose YY_BUF_SIZE in the header file. ** flex better escapes filenames with special characters in them (resolves bug #1623600) ** a memory leak was plugged(resolves bug #1601111) ** pattern language expanded; see the manual for details on the below highlights *** pattern options added to specify patterns as case-insensitive or case-sensitive *** pattern options to specify whether the "." character should match the newline character *** pattern options added to allow ignoring of whitespace in patterns *** POSIX character classes may be negated in patterns *** patterns may now use set difference, union operators ** the manual now contains an appendix listing various common patterns which may be useful when writing scanners ** some memory leaks were removed from the C++ scanner (but the C++ scanner is still experimental and may change radically without notice) ** c++ scanners can now use yywrap ** added new unit test for c++ and yywrap ** portability fixes to some unit tests ** flex man page and flex manual in pdf now distributed in the flex distribution ** new ca, vi, ga, nl translations from the translation project ** flex no longer comes with an rpm spec file ** flex development now happens with automake 1.9.6 * version 2.5.33 released 2006-2-20 ** all flex resources are now to be found from the website at http://flex.sourceforge.net/ ** there was no release 2.5.32 published ** numerous bug and security fixes ** new nl, vi, sv, ro, po, ga, ca, fr, tr translations from the translation project ** upgrade to use gettext 0.12 (this now makes the "pdf" and "ps" targets in the build system able to be run successfully) * version 2.5.31 released 2003-4-1 ** remove --enable-maintainer-mode configure option; none of the Makefiles were using it and it can be unduly confusing * version 2.5.30 released 2003-4-1 ** yylineno is per-buffer in reentrant scanners ** added %top directive for placing code at the top of the generated scanner; see manual for details ** flex now uses m4 to generate scanners; while this means that scanners are more readable, it means that flex requires m4 to be installed; see manual for details * version 2.5.29 released 2003-3-5 ** Automatic stack management for multiple input buffers in C and C++ scanners ** moved the flex documentation to a new doc/ subdirectory ** cleanups to the yy namespace * version 2.5.28 released 2003-2-12 ** flex is now hosted at sourceforge ** Fixed trailing slash bug in YY_INPUT macro def ** Flex now warns if always-interactive is specified with fast or full * version 2.5.27 released 2003-1-21 ** flex now works with recent bison versions ** new pt_br translation from the translation project * version 2.5.26 released 2003-1-14 ** Fixed table deserialization bug on big-endian archs. Patch sent from Bryce Nichols ** yyleng has proper declarations now; this caused flex to generate unusable scanners for some programs ** the flex distribution now includes a spec file suitable for use with rpm ** some more c++ fixes ** new es translation from the translation project ** slight tweaks to the flex_int*_t types ** flex now warns about pattern ranges that might be ambiguous when generating a case-insensitive scanner * version 2.5.25 released 2002-12-2 ** flex now uses flex_int*_t types. For C99 systems, they are just the int*_t types; for non-C99 systems, we just make some typedefs ** new pt_br translation from the translation project * version 2.5.24 released 2002-11-25 * more portability fixes ** the manual continues to be updated and edited, but it's still got a ways to go ** it is possible to have multiple c++ scanners in the same program again ** new turkish translation from the translation project * version 2.5.23 released 2002-10-21 ** more portability fixes ** the manual includes a title page and a table-of-contents when printed ** the test suite can be run with "make check" from the top-level directory ** configure now accepts the --enable-maintainer-mode option ** gettext functionality is now only available externally ** the constant FLEX_BETA is defined if flex is a beta release ** the script create-test was not included in the distribution and it should have been * version 2.5.22 released 2002-10-10 ** more portability fixes around how we get ahold of the integral types; there is a constant FLEX_NEED_INTEGRAL_TYPE_DEFINITIONS which you should define if you don't have the header file (after you complain to your C vendor for not providing a reasonable C environment) ** more test suite cleanups; in particular, the test suite should run correctly when build from a different directory ** upgraded automake to 1.7 and consequently autoconf to 2.54; this means, among other things, that there is some support for formatting the manual in postscript and pdf in the distributed Makefile.in (and therefore in the Makefile built by configure) ** the flex.1 manpage is generated by help2man; (this has been true for quite a while but was not listed here) ** flex now includes three defined constants to indicate which version of flex generated a scanner (YY_FLEX_{MAJOR,MINOR,SUBMINOR}_VERSION) ** flex tries its best to output only the relevant portions of the skeleton when generating a scanner, thus avoiding as much conditional compilation as possible * version 2.5.21 released 2002-9-17 ** one of the tests in the test suite broke the dist target * version 2.5.20 released 2002-9-16 ** A flex scanner has the ability to save the DFA tables to a file, and load them at runtime when needed; see the manual for details ** Added %option bison-bridge (--bison-bridge) ** Removed %option reentrant-bison/--reentrant-bison/-Rb ** yylineno is present in all scanners; Modified nasty performance penalty warning with yylineno in documentation ** test-table-opts is now run last in the test suite because it's so fat ** flex can, to some extent, diagnose where internal problems occur ** new translations from the translation project: fr, ca, de, ru, sv **Flex generates C99 defs now; see YY_TRADITIONAL_FUNC_DEFS in the manual if that's not a good thing for you * version 2.5.19 released 2002-9-5 ** prevent segfault on input lines which are longer than the allocated space (problem report from Manoj Srivastava ) ** Changed option 'header' to 'header-file' * version 2.5.18 released 2002-9-4 ** portability fixes for integer constants and in the way the test suite reports its results ** the test for bison was reporting bison missing when it was, in fact, found ** if we don't find GNU indent, we're more careful when we're not finding it * version 2.5.17 released 2002-8-29 ** more portability fixes ** updated config.sub and config.guess ** flex is indented by GNU indent (this was done earlier but not explicitly documented) * version 2.5.16 released 2002-8-28 ** c++ scanners compile again ** there is now an indent target in the top-level Makefile; configure checks for GNU indent which is required for proper operation of the indent target ** some more portability fixes were made ** %options and invocation sections of manual merged ** a c++ test was added to the test suite ** we're trying to clean up more files in the test suite's make clean targets * version 2.5.15 released 2002-8-21 ** reject-state buffer is now dynamically allocated and REJECT buffer variables are reentrant-safe ** manual now discusses memory usage ** skeleton now processed by m4 before mkskel.sh; (this only matters if you want to change the skeleton or if you're doing flex development) ** zh_cn translation added from translation project ** a bug that caused a segfault has now been fixed ** the test suite now respects the usual CFLAGS, etc. variables ** removed some warnings which some tests triggered with the -s option ** the flex-generated header file now tries to be smarter about conditionally including start conditions ** tables code omitted from generated scanner when not used * version 2.5.14 released 2002-8-15 ** the tests using the reentrant c scanner as c++ were reworked slightly to be sure that the c++ was enforced ** de translation now included in the distribution ** various portability fixes regarding nls support, c++ include headers, etc. * version 2.5.13 released 2002-8-15 ** the header file output with %option header is now much smaller ** Fixed type mismatch in printf in scanner skeleton ** yylex_init now reports errors * version 2.5.12 released 2002-8-8 ** updated gettext support to 0.11.5 ** new fr translation from the translation project ** bison is no longer needed to build flex; If you are building flex from a release (i.e., not from a cvs snapshot), then you don't need to have a pre-built lex around either (unless you modify scan.l, of course); (This has been true for some time, but was not mentioned here.) * version 2.5.11 released 2002-7-31 ** Fixed bug where yyless did not consider yylineno ** the yylineno performance hit is now gone ** fixed some typos in the manual and we now include texinfo.tex in the distribution ** traditional prototypes output for C scanners, controlled by a preprocessor symbol; see documentation for details * version 2.5.10 released 2002-7-24 ** yy_globals renamed to yyscanner and yy_globals_t renamed to yy_guts_t ** added dist-bzip2 option to Makefile.am so we now produce a bzip2'd archive in addition to the standard gzip archive * version 2.5.9 ** new tests in test suite: test-mem-{nr,r}, test-posix, test-posixly-correct, test-debug-{nr,r} ** made changes to work with gcc-3.2 development code ** ability to choose which memory functions are used in flex ** new yylex_destroy() function for the non-reentrant scanner ** new handling of POSIXLY_CORRECT environment variable ** the test suite now has its copyrights explicitly described ** new ca, de, fr, ru, sv, tr translations * version 2.5.8 ** a new --posix option generates scanners with posix-style abc{1,3} compatible parsing, see manual for the screwy details * version 2.5.7 ** configure.in now includes a call to AC_PREREQ to enforce the requirement for autoconf at least 2.50 (This only effects you if you're doing flex development.) ** configure now uses autoconf's versioning information and configure --help reports the bug-reporting address for flex ** test suite now only reports success versus failure; reporting skipped is problematic under the current setup ** compilation with --disable-nls now works ** flex can now be built in a separate directory * version 2.5.6 ** gettext support added (from gettext 0.11) *** translations for ca, da, de, es, fr, ko, ru, sv, tr included ** distribution now built under automake 1.6 and autoconf 2.53 ** command-line option parsing happens differently now: *** Added long option parsing *** Options -n and -c, previously deprecated, now simply do nothing *** Options are now parsed left to right ** added a number of new options *** All positive %options are now accessible from the command line *** Added option -D, to define a preprocessor symbol *** Added option --header=FILE to specify a C .h file to generate *** added option --yywrap to call yywrap on EOF *** added option --yylineno to track line count in yylineno *** --yyclass=NAME name of C++ class when generating c++ scanners *** for long option names which are associated with existing short options, see accompanying documentation *** new %option nounistd or command-line --nounistd added to prevent flex from generating #include on systems that don't have that include file ** Support for reentrant C scanners has been added *** Updated the manual with the new reentrant API *** Two new options %option reentrant (-R) and %option reentrant-bison (-Rb) *** All globals optionally placed into struct yyglobals_t *** All access to globals replaced by macro invocations *** All functions optionally take one additional argument, yy_globals *** New style for invoking reentrant scanner: yylex_init(void** scanner ); yylex( scanner ); yylex_destroy( scanner ); *** Added get/set functions for members of struct yy_globals_t e.g., yyget_text, yyget_leng, etc *** Prefix substitution added for new functions *** Macro shortcuts to the lengthy get/set functions provided for use in actions, e.g., yytext, yyleng, etc *** Arbitrary, user-defined data, "yyextra", may be added to scanner ** %option nomain no longer implies %option yywrap But the inverse is still true ** Developer test suite added *** TESTS/ directory has been added. Users can 'make test' in the TESTS directory to execute the test suite ** Support for bison variables yylval and yylloc added ** automake support for the build process ** manual is now in texinfo/info format *** flex.1 removed from distribution ** flex no longer generates C-language scanners with C++-style comments ** flex now generates scanners in c++ which are compatible with recent c++ compilers ** flex input scanner now recognizes '\r' as an EOL character See the file ONEWS for changes in earlier releases. See the file COPYING for copying conditions. Local Variables: mode: text mode: outline-minor end: