Ragel 3.5 - May 29, 2004
========================
 -When parse errors occur, the partially generated output file is deleted and
  an non-zero exit status is returned.
 -Updated Vim syntax file.
 -Implemented the setting of the element type that is passed to the execute
  routine as well as method for specifying how ragel should retrive the key
  from the element type. This lets ragel process arbitrary structures inside
  of which is the key that is parsed.
      element struct Element;
      getkey fpc->character;
 -The current state is now implemented with an int across all machines. This
  simplifies working with current state variables. For example this allows a
  call stack to be implemented in user code.
 -Implemented a method for retrieving the current state, the target state, and
  any named states. 
      fcurs           -retrieve the current state
      ftargs          -retrieve the target state
      fstate(name)    -retrieve a named state.
 -Implemented a mechanism for jumping to and calling to a state stored in a
  variable.
      fgoto *<expr>;  -goto the state returned by the C/C++ expression.
      fcall *<expr>;  -call the state returned by the C/C++ expression.
 -Implemented a mechanism for specifying the next state without immediately
  transfering control there (any code following statement is executed).
      fnext label;    -set the state pointed to by label as the next state.
      fnext *<expr>;  -set the state returned by the C/C++ expression as the
                       next.
 -Action references are determined from the final machine instead of during
  the parse tree walk. Some actions can be referenced in the parse tree but not
  show up in the final machine. Machine analysis is now done based on this new
  computation.
 -Named state lookup now employs a breadth-first search in the lookup and
  allows the user to fully qualify names, making it possible to specify
  jumps/calls into parts of the machine deep in the name hierarchy. Each part
  of name (separated by ::) employs a breadth first search from it's starting
  point.
 -Name references now must always refer to a single state. Since references to
  multiple states is not normally intended, it no longer happens
  automatically. This frees the programmer from thinking about whether or not
  a state reference is unique.  It also avoids the added complexity of
  determining when to merge the targets of multiple references. The effect of
  references to multiple states can be explicitly created using the join
  operator and epsilon transitions.
 -M option was split into -S and -M. -S specifies the machine spec to generate
  for graphviz output and dumping. -M specifies the machine definition or
  instantiation.
 -Machine function parameters are now prefixed with and underscore to
  avoid the hiding of class members.

Ragel 3.4 - May 8, 2004
=======================
 -Added the longest match kleene star operator **, which is synonymous 
  with ( ( <machine> ) $0 %1 ) *.
 -Epsilon operators distinguish between leaving transitions (going to an
  another expression in a comma separated list) and non-leaving transitions.
  Leaving actions and priorities are appropriately transferred.
 -Relative priority of following ops changed to:
      1. Action/Priority 
      2. Epsilon 
      3. Label
  If label is done first then the isolation of the start state in > operators
  will cause the label to point to the old start state that doesn't have the
  new action/priority.
 -Merged >! and >~, @! and @~, %! and %~, and $! and $~ operators to have one
  set of global error action operators (>!, @!, %! and $!) that are invoked on
  error by unexpected characters as well as by unexepected EOF.
 -Added the fpc keyword for use in action code. This is a pointer to the
  current character. *fpc == fc. If an action is invoked on EOF then fpc == 0.
 -Added >^, @^, %^, and $^ local error operators. Global error operators (>!,
  @!, $!, and %!) cause actions to be invoked if the final machine fails.
  Local error actions cause actions to be invoked if if the current machine
  fails.
 -Changed error operators to mean embed global/local error actions in:
     >! and !^  -the start state.
     @! and @^  -states that are not the start state and are not final.
     %! and %^  -final states.
     $! and $^  -all states.
 -Added >@! which is synonymous >! then @!
 -Added >@^ which is synonymous >^ then @^
 -Added @%! which is synonymous @! then %!
 -Added @%^ which is synonymous >^ then @^
 -FsmGraph representation of transition lists was changed from a mapping of
  alphabet key -> transition objects using a BST to simply a list of
  transition objects. Since the transitions are no longer divided by
  single/range, the fast finding of transition objects by key is no longer
  required functionality and can be eliminated. This new implementation uses
  the same amount of memory however causes less allocations. It also make more
  sense for supporting error transitions with actions. Previously an error
  transition was represented by a null value in the BST.
 -Regular expression ranges are checked to ensure that lower <= upper.
 -Added printf-like example.
 -Added atoi2, erract2, and gotcallret to the test suite.
 -Improved build test to support make -jN and simplified the compiling and
  running of tests.

Ragel 3.3 - Mar 7, 2004
=========================
 -Portability bug fixes were made. Minimum and maximum integer values are
  now taken from the system. An alignment problem on 64bit systems
  was fixed.

Ragel 3.2 - Feb 28, 2004
========================
 -Added a Vim syntax file.
 -Eliminated length var from generated execute code in favour of an end
  pointer. Using length requires two variables be read and written. Using an
  end pointer requires one variable read and written and one read. Results in
  more optimizable code.
 -Minimization is now on by default.
 -States are ordered in output by depth first search.
 -Bug in minimization fixed. States were not being distinguished based on
  error actions. 
 -Added null and empty builtin machines.
 -Added EOF error action operators. These are >~, >@, $~, and %~. EOF error
  operators embed actions to take if the EOF is seen and interpreted as an
  error. The operators correspond to the following states:
    -the start state
    -any state with a transition to a final state
    -any state with a transiion out
    -a final state
 -Fixed bug in generation of unreference machine vars using -M. Unreferenced
  vars don't have a name tree built underneath when starting from
  instantiations. Need to instead build the name tree starting at the var.
 -Calls, returns, holds and references to fc in out action code are now
  handled for ipgoto output.
 -Only actions referenced by an instantiated machine expression are put into
  the action index and written out.
 -Added rlscan, an example that lexes Ragel input.

Ragel 3.1 - Feb 18, 2004
========================
 -Duplicates in OR literals are removed and no longer cause an assertion
  failure.
 -Duplicate entry points used in goto and call statements are made into
  deterministic entry points.
 -Base FsmGraph code moved from aapl into ragel, as an increasing amount
  of specialization is required. Too much time was spent attempting to
  keep it as a general purpose template.
 -FsmGraph code de-templatized and heirarchy squashed to a single class.
 -Single transitions taken out of FsmGraph code. In the machine construction
  stage, transitions are now implemented only with ranges and default
  transtions. This reduces memory consumption, simplifies code and prevents
  covered transitions. However it requires the automated selection of single
  transitions to keep goto-driven code lean.
 -Machine reduction completely rewritten to be in-place. As duplicate
  transitions and actions are found and the machine is converted to a format
  suitable for writing as C code or as GraphViz input, the memory allocated
  for states and transitions is reused, instead of newly allocated.
 -New reduction code consolodates ranges, selects a default transition, and
  selects single transitions with the goal of joining ranges that are split by
  any number of single characters.
 -Line directive changed from "# <num> <file>" to the more common format
  "#line <num> <file>".
 -Operator :! changed to @!. This should have happened in last release.
 -Added params example.

Ragel 3.0 - Jan 22, 2004
========================
 -Ragel now parses the contents of struct statements and action code. 
 -The keyword fc replaces the use of *p to reference the current character in
  action code.
 -Machine instantiations other than main are allowed.
 -Call, jump and return statements are now available in action code. This
  facility makes it possible to jump to an error handling machine, call a
  sub-machine for parsing a field or to follow paths through a machine as
  determined by arbitrary C code.
 -Added labels to the language. Labels can be used anywhere in a machine
  expression to define an entry point. Also references to machine definitions
  cause the implicit creation of a label.
 -Added epsilon transitions to the language. Epsilon operators may reference
  labels in the current name scope resolved when join operators are evaluated
  and at the root of the expression tree of machine assignment/instantiation.
 -Added the comma operator, which joins machines together without drawing any
  transitions between them. This operator is useful in combination with
  labels, the epsilon operator and user code transitions for defining machines
  using the named state and transition list paradigm. It is also useful for
  invoking transitions based on some analysis of the input or on the
  environment.
 -Added >!, :!, $!, %! operators for specifying actions to take should the
  machine fail. These operators embed actions to execute if the machine
  fails in
    -the start state
    -any state with a transition to a final state
    -any state with a transiion out
    -a final state
  The general rule is that if an action embedding operator embeds an action
  into a set of transitions T, then the error-counterpart with a !  embeds an
  action into the error transition taken when any transition T is a candidate,
  but does not match the input.
 -The finishing augmentation operator ':' has been changed to '@'. This
  frees the ':' symbol for machine labels and avoids hacks to the parser to
  allow the use of ':' for both labels and finishing augmentations. The best
  hack required that label names be distinct from machine definition names as
  in main := word : word; This restriction is not good because labels are
  local to the machine that they are used in whereas machine names are global
  entities. Label name choices should not be restricted by the set of names
  that are in use for machines.
 -Named priority syntax now requires parenthesis surrounding the name and
  value pair. This avoids grammar ambiguities now that the ',' operator has
  been introduced and makes it more clear that the name and value are an
  asscociated pair.
 -Backslashes are escaped in line directive paths.

Ragel 2.2 - Oct 6, 2003
=======================
 -Added {n}, {,n}, {n,} {n,m} repetition operators.
    <expr> {n}    -- exactly n repetitions
    <expr> {,n}   -- zero to n repetitions
    <expr> {n,}   -- n or more repetitions
    <expr> {n,m}  -- n to m repetitions
 -Bug in binary search table in Aapl fixed. Fixes crashing on machines that
  add to action tables that are implicitly shared among transitions.
 -Tests using obsolete minimization algorithms are no longer built and run by
  default.
 -Added atoi and concurrent from examples to the test suite.

Ragel 2.1 - Sep 22, 2003
========================
 -Bug in priority comparison code fixed. Segfaulted on some input with many
  embedded priorities.
 -Added two new examples.

Ragel 2.0 - Sep 7, 2003
=======================
 -Optional (?), One or More (+) and Kleene Star (*) operators changed from
  prefix to postfix. Rationale is that postfix version is far more common in
  regular expression implementations and will be more readily understood.
 -All priority values attached to transitions are now accompanied by a name.
  Transitions no longer have default priority values of zero assigned
  to them. Only transitions that have different priority values assigned
  to the same name influence the NFA-DFA conversion. This scheme reduces
  side-effects of priorities.
 -Removed the %! statement for unsetting pending out priorities. With
  named priorities, it is not necessary to clear the priorities of a
  machine with $0 %! because non-colliding names can be used to avoid
  side-effects.
 -Removed the clear keyword, which was for removing actions from a machine.
  Not required functionality and it is non-intuitive to have a language
  feature that undoes previous definitions.
 -Removed the ^ modifier to repetition and concatenation operators. This
  undocumented feature prevented out transitions and out priorities from being
  transfered from final states to transitions leaving machines. Not required
  functionality and complicates the language unnecessarily.
 -Keyword 'func' changed to 'action' as a part of the phasing out of the term
  'function' in favour of 'action'. Rationale is that the term 'function'
  implies that the code is called like a C function, which is not necessarily
  the case. The term 'action' is far more common in state machine compiler
  implementations.
 -Added the instantiation statement, which looks like a standard variable
  assignment except := is used instead of =. Instantiations go into the
  same graph dictionary as definitions. In the the future, instantiations
  will be used as the target for gotos and calls in action code.
 -The main graph should now be explicitly instantiated. If it is not,
  a warning is issued.
 -Or literal basic machines ([] outside of regular expressions) now support
  negation and ranges. 
 -C and C++ interfaces lowercased. In the C interface an underscore now
  separates the fsm machine and the function name. Rationale is that lowercased
  library and generated routines are more common.
    C output:
      int fsm_init( struct clang *fsm );
      int fsm_execute( struct clang *fsm, char *data, int dlen );
      int fsm_finish( struct clang *fsm );
    C++ output:
      int fsm::init( );
      int fsm::execute( char *data, int dlen );
      int fsm::finish( );
 -Init, execute and finish all return -1 if the machine is in the error state
  and can never accept, 0 if the machine is in a non-accepting state that has a
  path to a final state and 1 if the machine is in an accepting state.
 -Accept routine eliminated. Determining whether or not the machine accepts is
  done by examining the return value of the finish routine.
 -In C output, fsm structure is no longer a typedef, so referencing requires
  the struct keyword. This is to stay in line with C language conventions.
 -In C++ output, constructor is no longer written by ragel. As a consequence,
  init routine is not called automatically. Allows constructor to be supplied
  by user as well as the return value of init to be examined without calling it
  twice.
 -Static start state and private structures are taken out of C++ classes.

Ragel 1.5.4 - Jul 14, 2003
==========================
 -Workaround for building with bison 1.875, which produces an
  optimization that doesn't build with newer version gcc.

Ragel 1.5.3 - Jul 10, 2003
==========================
 -Fixed building with versions of flex that recognize YY_NO_UNPUT.
 -Fixed version numbers in ragel.spec file.

Ragel 1.5.2 - Jul 7, 2003
=========================
 -Transition actions and out actions displayed in the graphviz output.
 -Transitions on negative numbers handled in graphviz output.
 -Warning generated when using bison 1.875 now squashed.
 
Ragel 1.5.1 - Jun 21, 2003
==========================
 -Bugs fixed: Don't delete the output objects when writing to standard out.
  Copy mem into parser buffer with memcpy, not strcpy. Fixes buffer mem errror.
 -Fixes for compiling with Sun WorkShop 6 compilers.

Ragel 1.5.0 - Jun 10, 2003
==========================
 -Line directives written to the output so that errors in the action code
  are properly reported in the ragel input file.
 -Simple graphviz dot file output format is supported. Shows states and
  transitions. Does not yet show actions.
 -Options -p and -f dropped in favour of -d output format.
 -Added option -M for specifying the machine to dump with -d or the graph to
  generate with -V.
 -Error recovery implemented.
 -Proper line and column number tracking implemented in the scanner.
 -All action/function code is now embedded in the main Execute routine. Avoids
  duplication of action code in the Finish routine and the need to call
  ExecFuncs which resulted in huge code bloat. Will also allow actions to
  modify cs when fsm goto, call and return is supported in action code.
 -Fsm spec can have no statements, nothing will be generated.
 -Bug fix: Don't accept ] as the opening of a .-. range a reg exp.
 -Regular expression or set ranges (ie /[0-9]/) are now handled by the parser
  and consequently must be well-formed. The following now generates a parser
  error: /[+-]/ and must be rewritten as /[+\-]/. Also fixes a bug whereby ]
  might be accepted as the opening of a .-. range causing /[0-9]-[0-9]/ to
  parse incorrectly.
 -\v, \f, and \r are now treated as whitespace in an fsm spec.

Ragel 1.4.1 - Nov 19, 2002
==========================
 -Compile fixes. The last release (integer alphabets) was so exciting
  that usual portability checks got bypassed.

Ragel 1.4.0 - Nov 19, 2002
==========================
 -Arbitrary integer alphabets are now fully supported! A new language
  construct:
  'alphtype <type>' added for specifying the type of the alphabet. Default
  is 'char'. Possible alphabet types are:
       char, unsigned char, short, unsigned short, int, unsigned int
 -Literal machines specified in decimal format can now be negative when the
  alphabet is a signed type.
 -Literal machines (strings, decimal and hex) have their values checked for
  overflow/underflow against the size of the alphabet type.
 -Table driven and goto driven output redesigned to support ranges. Table
  driven uses a binary search for locating single characters and ranges. Goto
  driven uses a switch statement for single characters and nested if blocks for
  ranges.
 -Switch driven output removed due to a lack of consistent advantages. Most of
  the time the switch driven FSM is of no use because the goto FSM makes
  smaller and faster code. Under certain circumstances it can produce smaller
  code than a goto driven fsm and be almost as fast, but some sporadic case
  does not warrant maintaining it.
 -Many warnings changed to errors.
 -Added option -p for printing the final fsm before minimization. This lets
  priorities be seen. Priorties are all reset to 0 before minimization. The
  exiting option -f prints the final fsm after minimization.
 -Fixed a bug in the clang test and example that resulted in redundant actions
  being executed.

Ragel 1.3.4 - Nov 6, 2002
=========================
 -Fixes to Chapter 1 of the guide.
 -Brought back the examples and made them current.
 -MSVC is no longer supported for compiling windows binaries because its
  support for the C++ standard is frustratingly inadequate, it will cost money
  to upgrade if it ever gets better, and MinGW is a much better alternative.
 -The build system now supports the --host= option for building ragel
  for another system (used for cross compiling a windows binary with MinGW).
 -Various design changes and fixes towards the goal of arbitrary integer
  alphabets and the handling of larger state machines were made.
 -The new shared vector class is now used for action lists in transitions and
  states to reduce memory allocations.
 -An avl tree is now used for the reduction of transitions and functions of an
  fsm graph before making the final machine. The tree allows better scalability
  and performance by not requiring consecutively larger heap allocations.
 -Final stages in the separation of fsm graph code from action embedding and
  priority assignment is complete. Makes the base graph leaner and easier to reuse
  in other projects (like Keller).

Ragel 1.3.3 - Oct 22, 2002
==========================
 -More diagrams were added to section 1.7.1 of the user guide.
 -FSM Graph code was reworked to spearate the regex/nfa/minimizaion graph
  algorithms from the manipulation of state and transition properties.
 -An rpm spec file from Cris Bailiff was added. This allows an rpm for ragel
  to be built with the command 'rpm -ta ragel-x.x.x.tar.gz'
 -Fixes to the build system and corresponding doc updates in the README.
 -Removed autil and included the one needed source file directly in the top
  level ragel directory.
 -Fixed a bug that nullified the 20 times speedup in large compilations
  claimed by the last version.
 -Removed awk from the doc build (it was added with the last release -- though
  not mentioned in the changelog).
 -Install of man page was moved to the doc dir. The install also installs the
  user guide to $(PREFIX)/share/doc/ragel/

Ragel 1.3.2 - Oct 16, 2002
==========================
 -Added option -v (or --version) to show version information.
 -The subtract operator no longer removes transition data from the machine
  being subtracted. This is left up to the user for the purpose of making it
  possible to transfer transitions using subtract and also for speeding up the
  subtract routine. Note that it is possible to explicitly clear transition
  data before a doing a subtract.
 -Rather severe typo bug fixed. Bug was related to transitions with higher
  priorities taking precedence. A wrong ptr was being returned. It appears to
  have worked most of the time becuase the old ptr was deleted and the new one
  allocated immediatly after so the old ptr often pointed to the same space.
  Just luck though.
 -Bug in the removing of dead end paths was fixed. If the start state
  has in transitions then those paths were not followed when finding states to
  keep. Would result in non-dead end states being removed from the graph.
 -In lists and in ranges are no longer maintained as a bst with the key as the
  alphabet character and the value as a list of transitions coming in on that
  char. There is one list for each of inList, inRange and inDefault. Now that
  the required functionality of the graph is well known it is safe to remove
  these lists to gain in speed and footprint. They shouldn't be needed.
 -IsolateStartState() runs on modification of start data only if the start
  state is not already isolated, which is now possible with the new in list
  representation.
 -Concat, Or and Star operators now use an approximation to
  removeUnreachableStates that does not require a traversal of the entire
  graph. This combined with an 'on-the-fly' management of final bits and final
  state status results is a dramatic speed increase when compiling machines
  that use those operators heavily. The strings2 test goes 20 times faster.
 -Before the final minimization, after all fsm operations are complete,
  priority data is reset which enables better minimization in cases where
  priorities would otherwise separate similar states.
 
Ragel 1.3.1 - Oct 2, 2002
=========================
 -Range transitions are now used to implement machines made with /[a-z]/ and
  the .. operator as well as most of the builtin machines. The ranges are not
  yet reflected in the output code, they are expanded as if they came from the
  regular single transitions. This is one step closer to arbitrary integer
  output.
 -The builtin machine 'any' was added. It is equiv to the builtin extend,
  matching any characters.
 -The builtin machine 'cntrl' now includes newline.
 -The builtin machine 'space' now includes newline.
 -The builtin machine 'ascii' is now the range 0-127, not all characters.
 -A man page was written.
 -A proper user guide was started. Chapter 1: Specifying Ragel Programs
  was written. It even has some diagrams :)

Ragel 1.3.0 - Sept 4, 2002
==========================
 -NULL keyword no longer used in table output.
 -Though not yet in use, underlying graph structure changed to support range
  transitions. As a result, most of the code that walks transition lists is now
  implemented with an iterator that hides the complexity of the transition
  lists and ranges. Range transitions will be used to implement /[a-z]/ style
  machines and machines made with the .. operator. Previously a single
  transition would be used for each char in the range, which is very costly.
  Ranges eliminate much of the space complexity and allow for the .. operator
  to be used with very large (integer) alphabets.
 -New minimization similar to Hopcroft's alg. It does not require n^2 space and
  runs close to O(n*log(n)) (an exact analysis of the alg is very hard). It is
  much better than the stable and approx minimization and obsoletes them both.
  An exact implementation of Hopcroft's alg is desirable but not possible
  because the ragel implementation does not assume a finite alphabet, which
  Hopcroft's requires. Ragel will support arbitrary integer alphabets which
  must be treated as an infinite set for implementation considerations.
 -New option -m using above described minimization to replace all previous
  minimization options. Old options sill work but are obsolete and not
  advertised with -h.
 -Bug fixed in goto style output. The error exit set the current state to 0,
  which is actually a valid state. If the machine was entered again it would go
  into the first state, very wrong. If the first state happened to be final then
  an immediate finish would accept when in fact it should fail.
 -Slightly better fsm minimization now capable due to clearing of the
  transition ordering numbers just prior to minimization. 
 
Ragel 1.2.2 - May 25, 2002
==========================
 -Configuration option --prefix now works when installing.
 -cc file extension changed to cpp for better portability.
 -Unlink of output file upon error no longer happens, removes dependency on
  unlink system command.
 -All multiline strings removed: not standard c++.
 -Awk build dependency removed.
 -MSVC 6.0 added to the list of supported compilers (with some tweaking of
  bison and flex output).

Ragel 1.2.1 - May 13, 2002
==========================
 -Automatic dependencies were fixed, they were not working correctly.
 -Updated AUTHORS file to reflect contributors.
 -Code is more C++ standards compliant: compiles with g++ 3.0
 -Fixed bugs that only showed up in g++ 3.0
 -Latest (unreleased) Aapl.
 -Configuration script bails out if bison++ is installed. Ragel will not
  compile with bison++ because it is coded in c++ and bison++ automatically
  generates a c++ parser. Ragel uses a c-style bison parser.

Ragel 1.2.0 - May 3, 2002
=========================
 -Underlying graph structure now supports default transitions. The result is
  that a transition does not need to be made for each char of the alphabet
  when making 'extend' or '/./' machines. Ragel compiles machines that
  use the aforementioned primitives WAY faster.
 -The ugly hacks needed to pick default transitions now go away due to
  the graph supporting default transitions directly.
 -If -e is given, but minimization is not turned on, print a warning.
 -Makefiles use automatic dependencies.

Ragel 1.1.0 - April 15, 2002
============================
 -Added goto fsm: much faster than any other fsm style.
 -Default operator (if two machines are side by side with no operator
  between them) is concatenation. First showed up in 1.0.4.
 -The fsm machine no longer auotmatically builds the flat table for
  transition indicies. Instead it keeps the key,ptr pair. In tabcodegen
  the flat table is produced. This way very large alphabets with sparse
  transitions will not consume large amounts of mem. This is also in prep
  for fsm graph getting a default transition.
 -Generated code contains a statement explicitly stating that ragel fsms
  are NOT covered by the GPL. Technically, Ragel copies part of itself
  to the output to make the generic fsm execution routine (for table driven
  fsms only) and so the output could be considered under the GPL. But this
  code is very trivial and could easlily be rewritten. The actual fsm data
  is subject to the copyright of the source. To promote the use of Ragel,
  a special exception is made for the part of the output copied from Ragel:
  it may be used without restriction.
 -Much more elegant code generation scheme is employed. Code generation
  class members need only put the 'codegen' keyword after their 'void' type
  in order to be automatically registerd to handle macros of the same name.
  An awk script recognises this keyword and generates an appropriate driver.
 -Ragel gets a test suite.
 -Postfunc and prefunc go away because they are not supported by non
  loop-driven fsms (goto, switch) and present duplicate functionality. 
  Universal funcs can be implemented by using $ operator.
 -Automatic dependencies used in build system, no more make depend target.
 -Code generation section in docs.
 -Uses the latests aapl.

Ragel 1.0.5 - March 3, 2002
===========================
 -Bugfix in SetErrorState that caused an assertion failure when compiling
  simple machines that did not have full transition tables (and thus did
  not show up on any example machines). Assertion failure did not occur
  when using the switch statement code as ragel does not call SetErrorState
  in that case.
 -Fixed some missing includes, now compiles on redhat.
 -Moved the FsmMachTrans Compare class out of FsmMachTrans. Some compilers
  don't deal with nested classes in templates too well.
 -Removed old unused BASEREF in fsmgraph and ragel now compiles using
  egcs-2.91.66 and presumably SUNWspro. The baseref is no longer needed
  because states do not support being elements in multiple lists. I would
  rather be able to support more compilers than have this feature.
 -Started a README with compilation notes. Started an AUTHORS file.
 -Started the user documentation. Describes basic machines and operators.

Ragel 1.0.4 - March 1, 2002
===========================
 -Ported to the version of Aapl just after 2.2.0 release. See 
  http://www.ragel.ca/aapl/ for details on aapl.
 -Fixed a bug in the clang example: the newline machine was not stared.
 -Added explanations to the clang and mailbox examples. This should
  help people that want to learn the lanuage as the manual is far from
  complete.

Ragel 1.0.3 - Feb 2, 2002
=========================
 -Added aapl to the ragel tree. No longer requires you to download
  and build aapl separately. Should avoid discouraging impatient users
  from compiling ragel.
 -Added the examples to the ragel tree.
 -Added configure script checks for bison and flex.
 -Fixed makefile so as not to die with newer versions of bison that
  write the header of the parser to a .hh file.
 -Started ChangeLog file.

Ragel 1.0.2 - Jan 30, 2002
==========================
 -Bug fix in calculating highIndex for table based code. Was using
  the length of out tranisition table rather than the value at the
  end.
 -If high/low index are at the limits, output a define in their place,
  not the high/low values themselves so as not to cause compiler warnings.
 -If the resulting machines don't have any indicies or functions, then
  omit the empty unrefereced static arrays so as not to cause compiler
  warnings about unused static vars.
 -Fixed variable sized indicies support. The header cannot have any
  reference to INDEX_TYPE as that info is not known at the time the header
  data is written. Forces us to use a void * for pointers to indicies. In
  the c++ versions we are forced to make much of the data non-member
  static data in the code portion for the same reason.

Ragel 1.0.1 - Jan 28, 2002
==========================
 -Exe name change from reglang to ragel.
 -Added ftabcodegen output code style which uses a table for states and
  transitions but uses a switch statement for the function execution.
 -Reformatted options in usage dump to look better.
 -Support escape sequences in [] sections of regular expressions.

Ragel 1.0 - Jan 25, 2002
========================
 -Initial release.
