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.
Difference between revisions of "ATL/VM Comparison"
< ATL
Line 98: | Line 98: | ||
! EMFVM | ! EMFVM | ||
! EMFTVM | ! EMFTVM | ||
+ | ! Comment | ||
! Proposed difference resolution | ! Proposed difference resolution | ||
|- | |- | ||
Line 105: | Line 106: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| Ant2Maven/Ant2Maven | | Ant2Maven/Ant2Maven | ||
Line 111: | Line 113: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| "foreach - distinct" not supported on EMFTVM | | "foreach - distinct" not supported on EMFTVM | ||
+ | | | ||
|- | |- | ||
| Ant2Maven/Maven2XML | | Ant2Maven/Maven2XML | ||
Line 117: | Line 120: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| depends on Ant2Maven | | depends on Ant2Maven | ||
+ | | | ||
|- | |- | ||
| Ant2Maven/XML2Ant | | Ant2Maven/XML2Ant | ||
Line 123: | Line 127: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| depends on Ant2Maven | | depends on Ant2Maven | ||
+ | | | ||
|- | |- | ||
| AssertionModification | | AssertionModification | ||
Line 129: | Line 134: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| AssignementTest/DeclarativeTest | | AssignementTest/DeclarativeTest | ||
Line 135: | Line 141: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| EMFTVM assumes SET semantics for all properties, not ADD for collections | | EMFTVM assumes SET semantics for all properties, not ADD for collections | ||
+ | | | ||
|- | |- | ||
| AssignementTest/ImperativeTest | | AssignementTest/ImperativeTest | ||
Line 141: | Line 148: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| EMFTVM assumes SET semantics for all properties, not ADD for collections | | EMFTVM assumes SET semantics for all properties, not ADD for collections | ||
+ | | | ||
|- | |- | ||
| AssignementTest/RefiningTest | | AssignementTest/RefiningTest | ||
Line 147: | Line 155: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| EMFTVM assumes SET semantics for all properties, not ADD for collections | | EMFTVM assumes SET semantics for all properties, not ADD for collections | ||
+ | | | ||
|- | |- | ||
| atl2010/CreateManyTraceElements | | atl2010/CreateManyTraceElements | ||
Line 153: | Line 162: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| atl2010/RemoveClass2010 | | atl2010/RemoveClass2010 | ||
Line 159: | Line 169: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| atl2010/RemoveClassAndCreate2010 | | atl2010/RemoveClassAndCreate2010 | ||
Line 165: | Line 176: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| atl2010/RemoveClassAndMoveProperty2010 | | atl2010/RemoveClassAndMoveProperty2010 | ||
Line 171: | Line 183: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| atl2010/RemoveClassAndMovePropertyRB2010 | | atl2010/RemoveClassAndMovePropertyRB2010 | ||
Line 177: | Line 190: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| atl2010/RemoveProperty2010 | | atl2010/RemoveProperty2010 | ||
Line 183: | Line 197: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Refining trace mode not supported | | Refining trace mode not supported | ||
+ | | | ||
|- | |- | ||
| ATL2Problem | | ATL2Problem | ||
Line 189: | Line 204: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Overlapping matches for default rules | | Overlapping matches for default rules | ||
+ | | | ||
|- | |- | ||
| BibTeX2DocBook | | BibTeX2DocBook | ||
Line 195: | Line 211: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore models | | Invalid Ecore models | ||
+ | | | ||
|- | |- | ||
| Book2Publication/Book2Publication | | Book2Publication/Book2Publication | ||
Line 201: | Line 218: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore models | | Invalid Ecore models | ||
+ | | | ||
|- | |- | ||
| Book2Publication/XML2Book | | Book2Publication/XML2Book | ||
Line 207: | Line 225: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| depends on Book2Publication | | depends on Book2Publication | ||
+ | | | ||
|- | |- | ||
| Class2Relational/Class2Relational | | Class2Relational/Class2Relational | ||
Line 213: | Line 232: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore models | | Invalid Ecore models | ||
+ | | | ||
|- | |- | ||
| Class2Relational/Ecore2Class | | Class2Relational/Ecore2Class | ||
Line 219: | Line 239: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| depends on Class2Relational | | depends on Class2Relational | ||
+ | | | ||
|- | |- | ||
| DSLBridge/MetamodelBridge/DSL2EMF/DSL2KM3 | | DSLBridge/MetamodelBridge/DSL2EMF/DSL2KM3 | ||
Line 225: | Line 246: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Assigning a Sequence of Sequences to a Collection property | | Assigning a Sequence of Sequences to a Collection property | ||
+ | | | ||
|- | |- | ||
| DSLBridge/MetamodelBridge/DSL2EMF/XML2DSL | | DSLBridge/MetamodelBridge/DSL2EMF/XML2DSL | ||
Line 231: | Line 253: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Assigning a Sequence of Sequences to a Collection property | | Assigning a Sequence of Sequences to a Collection property | ||
+ | | | ||
|- | |- | ||
| DSLBridge/MetamodelBridge/EMF2DSL/DSL2XML | | DSLBridge/MetamodelBridge/EMF2DSL/DSL2XML | ||
Line 237: | Line 260: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Assigning a single value to a Collection property | | Assigning a single value to a Collection property | ||
+ | | | ||
|- | |- | ||
| DSLBridge/MetamodelBridge/EMF2DSL/KM32DSL | | DSLBridge/MetamodelBridge/EMF2DSL/KM32DSL | ||
Line 243: | Line 267: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Use of "self" in helper without context declaration | | Use of "self" in helper without context declaration | ||
+ | | | ||
|- | |- | ||
| DSLBridge/ModelBridge/DSLModel2KM2 | | DSLBridge/ModelBridge/DSLModel2KM2 | ||
Line 249: | Line 274: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| foreach - distinct not supported on EMFTVM | | foreach - distinct not supported on EMFTVM | ||
+ | | | ||
|- | |- | ||
| DSLBridge/ModelBridge/KM32ATL_KM22MM | | DSLBridge/ModelBridge/KM32ATL_KM22MM | ||
Line 255: | Line 281: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Assigning a single value to a Collection property | | Assigning a single value to a Collection property | ||
+ | | | ||
|- | |- | ||
| DSLBridge/ModelBridge/XML2DSLModel | | DSLBridge/ModelBridge/XML2DSLModel | ||
Line 261: | Line 288: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| foreach - distinct not supported | | foreach - distinct not supported | ||
+ | | | ||
|- | |- | ||
| Enumerations/Ecore | | Enumerations/Ecore | ||
Line 267: | Line 295: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| Enumerations/UML | | Enumerations/UML | ||
Line 273: | Line 302: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| Families2Persons | | Families2Persons | ||
Line 279: | Line 309: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore models | | Invalid Ecore models | ||
+ | | | ||
|- | |- | ||
| FlattenTest | | FlattenTest | ||
Line 285: | Line 316: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| InterModelReferences | | InterModelReferences | ||
Line 291: | Line 323: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| IteratorsTests | | IteratorsTests | ||
Line 297: | Line 330: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| MultipleOutputs | | MultipleOutputs | ||
Line 303: | Line 337: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| OverflowOperandStack | | OverflowOperandStack | ||
Line 308: | Line 343: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
+ | | | ||
| | | | ||
|- | |- | ||
Line 315: | Line 351: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| ReverseBindings/NonRefiningMode | | ReverseBindings/NonRefiningMode | ||
Line 321: | Line 358: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Misconfigured test | | Misconfigured test | ||
+ | | | ||
|- | |- | ||
| ReverseBindings/NonRefiningMode | | ReverseBindings/NonRefiningMode | ||
Line 327: | Line 365: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Misconfigured test | | Misconfigured test | ||
+ | | | ||
|- | |- | ||
| RSM2TPC | | RSM2TPC | ||
Line 333: | Line 372: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Long execution time | | Long execution time | ||
+ | | | ||
|- | |- | ||
| Sildex2Sam | | Sildex2Sam | ||
Line 339: | Line 379: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore models + invalid rule inheritance + invalid module name | | Invalid Ecore models + invalid rule inheritance + invalid module name | ||
+ | | | ||
|- | |- | ||
| SpreadSheetML2PerformanceUMLStateChart/SpreadsheetMLSimplified2Trace | | SpreadSheetML2PerformanceUMLStateChart/SpreadsheetMLSimplified2Trace | ||
Line 345: | Line 386: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| SpreadSheetML2PerformanceUMLStateChart/Trace2PerformanceMetrics | | SpreadSheetML2PerformanceUMLStateChart/Trace2PerformanceMetrics | ||
Line 351: | Line 393: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| SpreadSheetML2PerformanceUMLStateChart/UMLStateChart2PerformanceAnnotatedUMLStateChart | | SpreadSheetML2PerformanceUMLStateChart/UMLStateChart2PerformanceAnnotatedUMLStateChart | ||
Line 357: | Line 400: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| UML2Relational | | UML2Relational | ||
Line 363: | Line 407: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Releng issue | | Releng issue | ||
+ | | | ||
|- | |- | ||
| UniqueLazyRule | | UniqueLazyRule | ||
Line 369: | Line 414: | ||
| style="color:red;" | FAIL | | style="color:red;" | FAIL | ||
| Invalid Ecore model, Module name does not match file name | | Invalid Ecore model, Module name does not match file name | ||
+ | | | ||
|} | |} |
Revision as of 16:34, 16 April 2015
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' | 'OclUndefined' (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) |
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 | FAIL | 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 | FAIL | Overlapping matches for default rules | |
BibTeX2DocBook | PASS | PASS | FAIL | Invalid Ecore models | |
Book2Publication/Book2Publication | PASS | PASS | FAIL | Invalid Ecore models | |
Book2Publication/XML2Book | PASS | PASS | FAIL | depends on Book2Publication | |
Class2Relational/Class2Relational | PASS | PASS | FAIL | Invalid Ecore models | |
Class2Relational/Ecore2Class | PASS | PASS | FAIL | depends on Class2Relational | |
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 | FAIL | Invalid Ecore models | |
FlattenTest | FAIL | FAIL | FAIL | Releng issue | |
InterModelReferences | FAIL | FAIL | FAIL | Releng issue | |
IteratorsTests | FAIL | FAIL | FAIL | Releng issue | |
MultipleOutputs | FAIL | FAIL | FAIL | Releng issue | |
OverflowOperandStack | FAIL | FAIL | FAIL | ||
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 Ecore models + invalid rule inheritance + invalid module name | |
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 | FAIL | Invalid Ecore model, Module name does not match file name |