-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathNEWS
262 lines (234 loc) · 10.5 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
version 2.10:
- new type engine with subtyping used by default
- added high-level transformation constructions
- %transformation
- %resolve
- %tracelink
- op_implement (mappings)
- added Ada backend
- Ada mappings
- Ada version of sl
- Tom-EMF
- added -prefix option
- added -nt option (took subtyping in account during generation)
- fix various bugs (EEnum, subtyping, special characters replacement,
naming conventions,
- fix: backquote char is now allowed in %match subject
- bugfix
- #13741: Problem in generated introspector with %oparray
- #14128: Make strategies for constructors with builtin children
version 2.9:
- added bracket notation for backquote-terms: `f[arg1=a()]
- add the possibility to define default-value in a %op
get_default(slotname) { ... }
use the '_' sign in a backquote to denote a default-value
example: `f(a(),_)
- handle non linear AC patterns
- improved EMF mapping generator (use subtyping facilities, generate mappings
for several packages, use files instead of stdout)
- improved syntax checker, improved error messages
- new parser based on antlr v3 (in alpha version)
- new type engine with subtype (also in alpha version)
version 2.8:
(administrative release)
- improved the organization of the Tom compiler itself
- compilation of multiple files in parallel
- integrate support for AC (Associative-Commutative) matching
- integrate a new type-inference engine
- integrate a new tool to connect Tom with EMF
- several bugfixes
version 2.7:
- Gom has a new option: --fresh, to generate support for syntax involving
alpha-convertible names and binding operations
- Gom has a new option: --nosharing, to generate a data-structure without
maximal-sharing
- new traversal combinator in the Strategy Library: Up
- Java generics in the type preserving visit methods of the Strategy library
- Gom <--> ATerm has been improved for better compatibility
- new ant options: ccode and camlcode
- the Tom compiler is now thread-safe (can compile file in parallel)
- new option: --multithread
version 2.6:
- the left-handside of a rule supports the matching-constraint
notation (p << t), as well as any combination of conjunction (&&) and
disjunction (||)
- algebraic rules (lhs -> rhs) can now have any conjunction or disjunction of
conditions
- %match and %strategy offer a new notation for simple rules (pattern -> term
instead of pattern -> { return `term; })
- the double-dispathing mechanism of the strategy library has been replaced
by a simpler dispatching approach, making the use of strategies simpler
when Gom is not used
- a new tool (GomAntlrAdapter) makes simpler the connection between AST
produced by Antlr and Gom, making the use of pattern matching and
strategies directly available on these trees
- Tom can inline the mapping defined using %typeterm and %op, making the
generated code smaller and faster
- Lists generated by Gom implement the Collection interface
- Term-graph rewriting support in Gom
- several speed-ups of the compilation process as well as for the
generated code.
version 2.5:
- %rule has been replaced by a new rules() construct in Gom. This new
construct ensures that rules are always applied, even when manipuling a term
using the Java API.
- Gom supports various theories for lists. A list can now be normalized wrt.
associative and neutral element axioms (AU), as well as
associative-commutative (AC) or AC with neutral element (ACU).
- Gom supports terms with pointers to manipulate graph structures.
- Tom has a new compiler based on constraint solving.
- Tom supports matching for list-operators whose domain is equal to the
codomain.
This corresponds to associative matching with neutral element (AU).
An interesting variant for flattened lists (FL) has also been developed.
- Tom supports any combination of patterns, anti-patterns, and list-operators,
even with anti-patterns.
- The new strategy library sl allows access to more context information, such
as the root of the term to which the strategy is applied
version 2.4:
- the eclipse plugin is back, for eclipse version 3.2
- in the %match construct, the sort of the subject is now optional. Its is
automatically inferred from the patterns when possible. In addition, a
subject is no longer restricted to a variable. Constructors and function
calls can be used.
- Gom generates congruence strategies and offers new functionalities, such as
the length of a list.
- !: a new construct that can be used to denote anti-patterns. Tom support
anti-patterns under syntactic and list-operators, but not yet in XML.
- the strategy library has been extended such that strategy expressions can be
matched, like any other term. A strategy can now take another strategy in
argument. The mu-expansion is performed on strategies defined using
%strategy.
- a support for Java bytecode analysis and transformation has been added
version 2.3:
- a new generator of abstract data types has been introduced: Gom.
Its syntax is compatible with the syntax of Vas.
Gom is more expressive than Vas by allowing the definition of Hooks.
This ensure that an action is executed each time a constructor is built. In
practice, this allows to compute canonical forms.
In addition, Gom generate more compact code and is more efficient than Vas.
- %strategy: a new construct that helps to defines strategies. When
using %strategy, it is no longer necessary to define inner-classes.
In addition, a Tom mapping is automatically generated.
- %[...]%: a new construct that helps to write backends. The text
between %[ and ]% is no interpreted, therefore the string
s=%[print("hello\n")]% corresponds to s="print(\"hello\\n\")"
- the documentation has been improved. The four documents (reference, guide,
tutorial, and cookbook) have been merged into one: manual
- new organization
* tom
* |--- engine
* | |--- adt (datatype definitions)
* | |--- backend
* | |--- checker
* | |--- compiler
* | |--- exception
* | |--- optimizer
* | |--- parser
* | |--- starter
* | |--- tools
* | |--- verifier
* | |--- xml
* |--- library
* |--- platform
version 2.2:
- this version is not 100% compatible with version 2.1.
see User Guide, section migration, for details.
- %typelist and %typearray have been removed: use %typeterm instead
- access functions (get_head, get_tail, etc.) have to be defined in %oplist
and %oparray
- fixed a completeness bug in array version of list-matching
- a new optimizer has been developed (-O2): this improves pattern matching
efficiency
- backquote notation can be used in make(...) { ... }
version 2.1:
- introduced %vas syntax
- new parser based on ANTLR
- new internal architecture based on plugins
- new library for defining traversal strategies
- fixed two major bugs, related to completeness, in list-matching
- several bug fixed
- new library organization
* tom
* |--- library
* | |--- adt (datatype definitions)
* | |--- mapping (predefined mapping)
* | |--- adt (generated mapping)
* | |--- plugin (platform tools)
* | |--- set (to handle sets)
* | |--- strategy
* | |--- concurrent (to support parallel strategy)
* | |--- traversal (generic traversal)
* | |--- xml (xml tools)
* |
* |--- platform (the Tom Plugin Platform, known as Tom server)
* |--- adt
version 2.0:
- support for Caml
- introduced several predefined mappings
- added an optimizer which performs inlining and improves the
efficiency of the generated code
- support for builtin char and builtin string (seen as list of
char)
- a better XML support (backquote notation, anonymous nodes)
- re-designed kernel compiler (with better algorithms)
- re-designed list-matching
- annoted variables and non-linear variable are compiled into constraints
- syntactic patterns are no longer abstracted, but compiled in list-matching
- several bugs fixed (improved the sortAttributeList method, major
bug in the Type Expander)
- removed %typeint, %typedouble and %typestring (use predefined mapping instead)
version 1.5:
- ported jtom to new version of apigen
- new TomChecker and simpler regression test infrastructure
- added disjunction of HeadSymbol
- XML syntax corresponds to implicit notation
- implicit and explicit XML lists are allowed
- unamed lists are allowed
- sort attribute names by alphabetic order
- new XML parser
- fix undetected error
- optimization in matching: do not assign UnamedVariable when
they are not annotated
- fix a bug in linearization of annoted variables
- allow UnamedVariable and UnamedVariableStar in list-matching
- allow annoted variables in list-matching
version 1.4:
- fix the ^M problem under windows
- user defined labels a are allowed in patterns
- complex paths allowed in %include constructs
version 1.3:
- %typein and %typedouble added
- runtime/strategies added to stable
- builtin strings supported in back-quoted terms
- start debugger development
- allow is_fsym for list and array operators
version 1.2:
- beginning of documentation: Tom user manual
- improved debugging facilities
- traversal facilities added in jtom.runtime
- disjunction of patterns supported
- integer in backQuotedTerm supported
- matching and equality conditions supported in rewrite rules
- several bugs fixed
version 1.1:
- new debugging facilities:
Tom source and the generated code are now synchronized
- backquote support for typelist and typearray
make_add renamed into make_insert (for oplist)
make_add renamed into make_append (for oparray)
- non-linear patterns supported
- builtin-integers supported
- tutorial
version 1.0:
- new stable version based on ApiGen
- efficiency bottleneck found
- import option added: path extension for includes
- noDeclaration flags added: do not generate declarations
version 0.7:
- bootstrap with ApiGen (6 types)
version 0.6:
- use a cache to improve the generator
- backquote mechanism introduced
version 0.5:
- front-end improved by adding a type checker.