Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "ATL/VM Comparison"

< ATL
(added self vs. thisModule difference and started a new column for proposed resolution)
(filled some cells in proposed resolution column)
Line 37: Line 37:
 
| yes
 
| yes
 
| yes ([http://git.eclipse.org/c/mmt/org.eclipse.atl.git/commit/?id=66dca3c34f35cffbd41905020fc6351b024cddb8 commit])
 
| yes ([http://git.eclipse.org/c/mmt/org.eclipse.atl.git/commit/?id=66dca3c34f35cffbd41905020fc6351b024cddb8 commit])
 +
| EMFVM & EMFTVM improvement (i.e., no modification on Regular VM)
 
|-
 
|-
 
| OCL collections
 
| OCL collections
Line 47: Line 48:
 
| yes, single
 
| yes, single
 
| yes, multiple (via "-- @extends")
 
| yes, multiple (via "-- @extends")
 +
| EMFTVM improvement (i.e., no modification on older VMs), consider ATL syntax extension
 
|-
 
|-
 
| Method dispatch
 
| Method dispatch
Line 52: Line 54:
 
| virtual
 
| virtual
 
| multiple virtual
 
| multiple virtual
 +
| EMFTVM improvement (i.e., no modification on older VMs)
 
|-
 
|-
 
| Closures
 
| Closures
Line 57: Line 60:
 
| no
 
| no
 
| yes (but ATL syntax does not support defining Lambda parameters)
 
| 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
 
| Helper on Collection context
Line 62: Line 66:
 
| ?
 
| ?
 
| yes, with element type erasure
 
| yes, with element type erasure
 +
| EMFTVM improvement (i.e., no modification on older VMs)
 
|-
 
|-
 
| Refining mode
 
| Refining mode

Revision as of 06:18, 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
superget (e.g. "super.attribute") no no yes
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
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)
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)

Back to the top