Started on release notes for version 6.
[external/ragel.git] / doc / RELEASE_NOTES_V6
1                       RELEASE NOTES Ragel 6.X
2
3 This file describes the changes in Ragel version 5.X that are not backwards
4 compatible. For a list of all the changes see the ChangeLog file.
5
6 The EOF Event
7 =============
8
9 The "write eof" command is no longer needed and was removed.
10
11 Introcuded the "eof" variable for indicating the end of file. The p variable is
12 checked against eof when the processing loop reaches the end of a block. If p
13 == eof at this time then the EOF actions are executed. The variable is required
14 only when EOF actions have been emebedded.
15
16 Scanners now use EOF actions to generate tokens. This eliminates the need to
17 flush the last token.
18
19 Remove the "write eof" directive.
20
21 If the machine has EOF actions then the "eof" variable must be declared and set
22 to pe on the last buffer block.
23
24 Semantics of > % and Error Actions
25 ==================================
26
27 Gone back to 3.X semantics for >, % and error actions. The > operator also
28 embeds a leaving action/priority into the start state if it is final. If EOF
29 happens in a state with a leaving operator then leaving action it is executed.
30 If EOF happens in a non-final state that has an error action, the error action
31 is executed.
32
33 Backend Automatically Executed
34 ==============================
35
36 The Ragel program now executes frontend and backend processes separately,
37 connecting them with a temporary file in the current directory. Without the -f
38 option the "ragel" program marshals arguments and calls the frontend and
39 backend. With the -f option the "ragel" program acts as the frontend only.
40
41 Makefiles don't need to execute the backend.
42
43 The fbreak Statement
44 ====================
45
46 The fbreak statement now advances p.
47
48 After an fbreak you do not need to advance p.
49
50 Guarded Concatenation Operators are Stronger
51 ============================================
52
53 In the :> :>> and <: operators it was possible for the priority assignment to
54 be bypassed via the zero length string. In :> this was fixed automatically with
55 the semantics change to the entering priority operator. If the start state is
56 final it now embeds a leaving action into it, preventing persistance through
57 the zero length string. In :>> and <: this was fixed explicitly. With <: the
58 entering priority operator was used and with :> a sepecial exception was added.
59 Since it uses the finishing transition operator it also adds a leaving priority
60 to the start state if it is final.
61
62 The tokstart and tokend Variables Renamed
63 =========================================
64
65 The "tokstart" and "tokend" variables were changed to "ts" and "te".
66
67 Search and replace:
68     tokstart => ts
69     tokend => te