Difference between revisions of "ATL/VM Comparison"
< ATL
(filled proposed resolution cell for laziness) |
(filled more proposed resolution cells) |
||
Line 17: | Line 17: | ||
| no | | no | ||
| yes | | yes | ||
+ | | fix EMFVM | ||
|- | |- | ||
| superget (e.g. "super.attribute") | | superget (e.g. "super.attribute") | ||
Line 22: | Line 23: | ||
| no | | no | ||
| yes | | yes | ||
+ | | EMFTVM improvement (i.e., no modification of older VMs) | ||
|- | |- | ||
| attribute helper on OclUndefined | | attribute helper on OclUndefined | ||
Line 78: | Line 80: | ||
| 'OclUndefined' | | 'OclUndefined' | ||
| 'null' ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=406457 bug]) | | 'null' ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=406457 bug]) | ||
+ | | fix EMFTVM | ||
|- | |- | ||
| self instead of thisModule in context-less helpers and rules | | self instead of thisModule in context-less helpers and rules |
Revision as of 06:57, 3 December 2013
The objective of this page is to gather a list of features that are implemented differently in the three ATL Virtual Machines (VMs). Note that the recommended VM is EMFVM. RegularVM should only be used when EMFVM does not do what you want (increasingly rare). EMFTVM should only be used when you need the new experimental research features.
This table does not contain all features that are working similarly on all VMs.
Feature | RegularVM | EMFVM | EMFTVM | Proposed difference resolution |
---|---|---|---|---|
supercall | yes | no | yes | fix EMFVM |
superget (e.g. "super.attribute") | no | no | yes | EMFTVM improvement (i.e., no modification of older VMs) |
attribute helper on OclUndefined | no | yes | yes | |
debugger | yes | partially (does not stop on errors, variable inspection may not always work, especially stack in disassembly mode) | yes, but without stack inspection | |
.debug(<no argument>) | no | yes | yes (commit) | EMFVM & EMFTVM improvement (i.e., no modification on Regular VM) |
OCL collections | yes, eager | yes, eager | yes, lazy | if laziness is never problematic then EMFTVM improvement (i.e., no modification on older VMs) else make it configurable |
Rule inheritance | yes, single | yes, single | yes, multiple (via "-- @extends") | EMFTVM improvement (i.e., no modification on older VMs), consider ATL syntax extension |
Method dispatch | virtual | virtual | multiple virtual | EMFTVM improvement (i.e., no modification on older VMs) |
Closures | no | no | yes (but ATL syntax does not support defining Lambda parameters) | EMFTVM improvement (i.e., no modification on older VMs), consider ATL syntax extension |
Helper on Collection context | ? | ? | yes, with element type erasure | EMFTVM improvement (i.e., no modification on older VMs) |
Refining mode | In-place | In-place | In-place, without explicit "drop" | |
OclUndefined pretty printed as | 'OclUndefined' | 'OclUndefined' | 'null' (bug) | fix EMFTVM |
self instead of thisModule in context-less helpers and rules | yes | yes | no | report error for EMFTVM and deprecated for other VMs (see corresponding discussion on m2m-atl-dev) |