Ragel 6.7 - May 22, 2011
========================
-The C vim file now supports L,l on the end of literal numbers, other syntax
highlighting fixes.
-Added an explicit cast when modifying _trans to eliminate compiler warnings
on Windows/VC++
-Fix for ruby 1.9 compatibility.
-Fix for include directories (-I option) on Windows/VC++
-Can now rename data variable in C# code generator.
-Fix for non-char alphtype in C# code generator.
-Fix for signedness of wide char in C code generator. when comparing the wide
type against a literal we need to pick the right signedness for the literal.
-Fixed arithmetic overflow in generated C# code. The C# _acts and _nacts vars
should not be typed based on the size of the array elements they point to.
Fixes a bug reported by Attila Sztupák.
-Made the -L option work for Ruby.
-Enhanced ragel.m4 (from Diego).
-Applied GO patch from Justine Tunney.
-Applied D2 patch from Johannes Pfau.
-Applied Ocaml patch from ygrek.
Ragel 6.6 - Dec 2, 2009
=======================
-Applied a number of patches from Diego Elio 'Flameeyes' Pettenò. Should not
be modifying the program's arguments. Problem raised by const correctness in
gcc 4.4. Other const-correctness and include fixes provided.
-Fixed improper allocation of checks in makeIncludePathChecks.
-Fixed segfault when there are no machine instantiations.
-Fixed wrong line directives. Line directives need to use the fileName stored
in the InputLoc stuctures from the parse trees, not the root source file,
otherwise actions in included files will have the wrong source file names
associated with the text.
-Made a number of build system improvements. We locate the DIST file using
$srcdir and source it. It contains settings for build_parsers and
build_manual. This allows the user of a dist to enable only one.
-Added missing files to doc/Makefile.am and examples/Makefile.am.
-Added checks for pdflatex and fig2dev is build_manual is on.
-Use automake --foreign so we don't need to have INSTALL and NEWS present.
-Ragel VIM syntax files should be specialized by host language. Updated the
VIM syntax files.
-Just discovered that $srcdir is available in the configure script for
checking for the existence of a file created by dist-hook. This lets us write
a test that knows the difference between a distribution tarball and something
from the repos. The building of the parsers and the manual can now be
automatically turned off in a make dist tarball.
-Added examples to the dist. Added unicode2ragel.rb to EXTRA_DIST in contrib.
-Moved unicode2ragel.rb to the contrib directory.
Changes since 6.3:
-Moved back to a single executable. The old intermediate format can still be
generated using the -x option. Ragel was split into frontend and backend
programs in version 5.0. This was done to encourage interoperability with
other tools. Since then, ragel has been made to work with qfsm, with ragel
producing the intermediate format and qfsm consuming it. However, there has
been no use of Ragel as a consumer of state machine data, with Ragel used as
a code generator for DFAs. This is not surprising given that much of the
complexity of Ragel is in the frontend, where the regular language to DFA
compilation happens. Since the full benefits of the split have not
materialized, and the split increases the complexity for users, Ragel has
been made once again into a single executable.
-Applied a fix to the documentation Makefile from John D. Mitchell.
-Use CXXFLAGS instead of CFLAGS for C++ compiling. Patch from Diego
'Flameeyes' Pettenò.
-Added support for DESTDIR variable. Patch from Diego 'Flameeyes' Pettenò.
-Added a script called unicode2ragel.rb for generating unicode machines to
the examples directory. From Rakan El-Khalil.
-Fixed a copy-paste error in the documentation that was reported by Jose
Quinteiro.
-Added three new write commands:
write start;
write first_final;
write error;
These generate a reference to the start, first final and error state. When
there are many different machine specifications in one file it is easy to
get the prefix for these wrong (especially when you do a lot of copy-pasting
of boilerplate). The problem can be avoided by using write commands.
-Fixed a problem reading hex numbers that have the high bit set when the
alphabet is signed and we are on 64 bit. This was reported by _why. The fix
was provided by Wialliam Morgan. The literal 0xffffffff was used for a fully
set long when -1L should be used instead.
-Fixed a bug in graphviz generation. Ragel crashed when using -V and -M and
the specified machine referenced another machine that wasn't included in the
build.
-The name "CS" is in use on OpenSolaris, changed to vCS to ease compiling
Ragel there.
-Converted to automake.
-REALLY fixed a bug that was intended to be fixed in 6.4:
Fixed a problem reading hex numbers that have the high bit set when the
alphabet is signed and we are on 64 bit. This was reported by _why. The
fix was provided by Wialliam Morgan. The literal 0xffffffff was used for
a fully set long when -1L should be used instead.
A null patch (whitespace changes) must have gotten checked after I was
testing with and without the critical one-line patch and I forgot to enable
make sure it was enabled in the final checkin version.
Ragel compiles finite state machines from regular languages into
executable C, C++, Objective-C, D, Java, or Ruby code. Ragel state
machines can not only recognize byte sequences as regular expression
machines do, but can also execute code at arbitrary points in the
recognition of a regular language. Code embedding is done using
inline operators that do not disrupt the regular language syntax.