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

ATL/VM Comparison

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"
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)
Assignment/binding semantics SET semantics for single-valued properties, ADD semantics for collection properties SET semantics for single-valued properties, ADD semantics for collection properties SET semantics for all properties (by design; EMFTVM has separate ADD/REMOVE instructions)
Entrypoint rule support yes yes no Add entrypoint rule support to EMFTVM
Output model navigation Forbidden, but not enforced at runtime Forbidden, but not enforced at runtime Forbidden, and enforced at runtime EMFTVM improvement
Automatic type conversion during assignment/binding Yes: collection boxing/unboxing Yes: collection boxing/unboxing No (types must match exactly)
Module naming Doesn't matter Doesn't matter Module name must match file name EMFTVM improvement
"uses" clause Ignored Ignored Missing imports cause a load-time error EMFTVM improvement
Type references Ignored Ignored Checked: missing types (e.g. metaclasses) cause a load-time error EMFTVM improvement
"foreach - distinct" yes yes no report error for EMFTVM and deprecated for other VMs
lazy rule inheritance yes yes yes, since 4.0 EMFTVM issue
binding overriding yes yes overriden binding also executed ideally, EMFTVM should not execute overriden binding, but it currently does so to simplify support of inter-module rule inheritance at runtime

The following table lists the status of the ATL non-regression tests for each VM:

Test RegularVM EMFVM EMFTVM Comment Proposed difference resolution
291626 FAIL FAIL FAIL Releng issue
Ant2Maven/Ant2Maven PASS PASS FAIL "foreach - distinct" not supported on EMFTVM
Ant2Maven/Maven2XML PASS PASS FAIL depends on Ant2Maven
Ant2Maven/XML2Ant PASS PASS FAIL depends on Ant2Maven
AssertionModification FAIL FAIL PASS Releng issue
AssignementTest/DeclarativeTest PASS PASS FAIL EMFTVM assumes SET semantics for all properties, not ADD for collections
AssignementTest/ImperativeTest PASS PASS FAIL EMFTVM assumes SET semantics for all properties, not ADD for collections
AssignementTest/RefiningTest PASS PASS FAIL EMFTVM assumes SET semantics for all properties, not ADD for collections
atl2010/CreateManyTraceElements FAIL PASS FAIL Refining trace mode not supported
atl2010/RemoveClass2010 FAIL PASS FAIL Refining trace mode not supported
atl2010/RemoveClassAndCreate2010 FAIL PASS FAIL Refining trace mode not supported
atl2010/RemoveClassAndMoveProperty2010 FAIL PASS FAIL Refining trace mode not supported
atl2010/RemoveClassAndMovePropertyRB2010 FAIL PASS FAIL Refining trace mode not supported
atl2010/RemoveProperty2010 FAIL PASS FAIL Refining trace mode not supported
ATL2Problem PASS PASS PASS
BibTeX2DocBook PASS PASS FAIL Cannot assign single Book instance to multi-valued field DocBook::books
Book2Publication/Book2Publication PASS PASS PASS
Book2Publication/XML2Book PASS PASS PASS
Class2Relational/Class2Relational PASS PASS PASS
Class2Relational/Ecore2Class PASS PASS PASS
DSLBridge/MetamodelBridge/DSL2EMF/DSL2KM3 PASS PASS FAIL Assigning a Sequence of Sequences to a Collection property
DSLBridge/MetamodelBridge/DSL2EMF/XML2DSL PASS PASS FAIL Assigning a Sequence of Sequences to a Collection property
DSLBridge/MetamodelBridge/EMF2DSL/DSL2XML PASS PASS FAIL Assigning a single value to a Collection property
DSLBridge/MetamodelBridge/EMF2DSL/KM32DSL PASS PASS FAIL Use of "self" in helper without context declaration
DSLBridge/ModelBridge/DSLModel2KM2 PASS PASS FAIL foreach - distinct not supported on EMFTVM
DSLBridge/ModelBridge/KM32ATL_KM22MM PASS PASS FAIL Assigning a single value to a Collection property
DSLBridge/ModelBridge/XML2DSLModel PASS PASS FAIL foreach - distinct not supported
Enumerations/Ecore FAIL FAIL FAIL Releng issue
Enumerations/UML FAIL FAIL FAIL Releng issue
Families2Persons PASS PASS PASS
FlattenTest FAIL FAIL FAIL Releng issue
InterModelReferences FAIL FAIL FAIL Releng issue
IteratorsTests FAIL FAIL FAIL Releng issue
MultipleOutputs/MultipleOutputs_V0 FAIL FAIL PASS Releng issue
MultipleOutputs/MultipleOutputs_V1 FAIL FAIL PASS Releng issue
OverflowOperandStack FAIL FAIL PASS
Relational2UML FAIL FAIL FAIL Releng issue
ReverseBindings/NonRefiningMode FAIL FAIL FAIL Misconfigured test
ReverseBindings/NonRefiningMode FAIL FAIL FAIL Misconfigured test
RSM2TPC FAIL FAIL FAIL Long execution time
Sildex2Sam PASS PASS FAIL Invalid rule inheritance + invalid module name + invalid metaclass reference "SAM!IPort"
SpreadSheetML2PerformanceUMLStateChart/SpreadsheetMLSimplified2Trace FAIL FAIL FAIL Releng issue
SpreadSheetML2PerformanceUMLStateChart/Trace2PerformanceMetrics FAIL FAIL FAIL Releng issue
SpreadSheetML2PerformanceUMLStateChart/UMLStateChart2PerformanceAnnotatedUMLStateChart FAIL FAIL FAIL Releng issue
UML2Relational FAIL FAIL FAIL Releng issue
UniqueLazyRule PASS PASS PASS

Back to the top