Ragel 6.0 Changes ================= Remove old action embedding and condition setting syntax. Expressions of the form: ( expr1 <: expr2 . expr3 ) sometimes don't behave as expected. If expr2 contains the empty string then it's possible for the machine to escape to expr3. This is somewhat unexpected. The empty string does count as moving through the right machine so there should not be an exception for this case. Using the stronger implementation: ( expr1 $1 %0 . expr2 ) will solve the problem. Also, there is potential for nondeterminism to persist via the empty string with the :> and :>> operators. Should also guard against this using leaving priorities. fbreak should advance the current char. Depreciate fbreak and add fctl_break; fctl_return ; fctl_goto