flex NEWS

* Noteworthy changes in release 2.6.5 (2026-11-10) [stable]

** build

*** The ChangeLog that tools/git2cl writes is now valid UTF-8. Author
    names with accented characters used to come out in a different
    encoding from the rest of the file, and the script printed "Wide
    character in print" warnings.

*** The ChangeLog in the nightly distribution tarballs is no longer
    empty, and the nightly build now fails if it would be.

*** The script that updates the translations from the Translation
    Project now converts any .po file that is not in UTF-8 to UTF-8, so
    every translation in the source tree uses the same encoding.

*** 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.

*** Releases are now made and signed by a GitHub workflow. Each release
    has a detached signature for the tarballs and for a SHA256SUMS file,
    and a copy of the public key. The key is new and is not connected to
    the key that signed 2.6.4. The new key's fingerprint is 56D6 64C7
    0CC2 364C F516 4914 B7DF E8BB 6C24 1FED. It is published on
    keys.openpgp.org, at flexlexer.org, and in the README.

    Thanks to Joseph Langley for substantial portions of this change.

*** 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 <config.h> 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.

*** Added machine translations of the ca, da, de, eo, es, fi, ga, hr,
    ka, ko, pt_BR, ru, sr, tr, vi, zh_CN messages that the Translation
    Project had not updated. A native speaker has not reviewed them, and
    each one is marked as machine translated in its .po file.
    Translations from the Translation Project will replace them.

*** 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

*** A generated scanner now marks the places where it falls through from
    one case to the next with the fall-through attribute, where the
    compiler supports it, instead of only a comment. Clang, which
    ignores the comment, no longer warns about them under
    -Wimplicit-fallthrough. This covers the end-of-file cases for start
    conditions without an <<EOF>> rule and the fall-through in
    yyinput(). (#427, #709)

    Thanks to Luca Bacci.

*** A scanner that defines YY_NO_INPUT or YY_NO_UNPUT in section 1 again
    has yyinput() or yyunput() left out, as in flex 2.6.4, and no longer
    gets warnings about unused functions. The new names YY_NO_YYINPUT
    and YY_NO_YYUNPUT work as well. (#804)

    Thanks to Christoph Grüninger.

*** A scanner that defines its own ECHO macro again has it used, both
    by ECHO actions and by the default rule, as in flex 2.6.4, and no
    longer gets a warning that ECHO is redefined. Defining yyecho()
    takes precedence over defining ECHO. (#803)

    Thanks to Christoph Grüninger.

*** A scanner that defines its own YY_INPUT or yyread() can again create
    a buffer from a NULL file, for example with yy_create_buffer(NULL,
    size), and have it filled through that routine, as in flex 2.6.4.
    Such a buffer is treated as empty only when the scanner reads its
    input with flex's own routine, which needs a file to read from.
    (#802)

    Thanks to Christoph Grüninger.

*** The header file written by the --header-file option no longer
    contains the code from section 3 of the scanner file, such as
    function definitions. A scanner whose header was included in other
    source files could fail to compile or link because of it. (#801)

    Thanks to Christoph Grüninger.

*** 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 <cstdint> 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 <bryce@bnichols.org>

** 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 <inttypes.h> 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
   <srivasta@golden-gryphon.com>)

** 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 <unistd.h> 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:
