This ticket is tracking the progress on the the new frontend. Some documentation on the new frontend development is available on wiki:NewFrontEnd.
The current status is:
- Instantiation (Per, Adrian) 80%
-
Instantiation of long and short class definitions are implemented. Still missing are overloaded functions and partial derivative functions. Basic support for class extends is implemented.
- Extends (Per) 90%
-
Support for extends is implemented. More error checking is needed though, e.g. for duplicate elements (handling implemented, but the check whether two elements are identical needs to be improved) and illegal class types.
- Lookup (Per) 90%
-
Basic lookup is implemented, both for class names and crefs. Very little error checking is done beyond "name could not be found" though.
- Modifiers (Per) 80%
-
Support of modifiers on components, extends clauses and class modifiers is implemented, more testing is needed.
- Redeclare (Per) 80%
-
Basic redeclare of components and classes, both as modifiers and elements, is implemented. Merging of modifiers, constraining type, etc., needs more work.
- Imports (Per, Adrian) 95%
-
Imports are now mostly handled, both for classes and components. More error checking is needed:
- Enforce that imports use the form [package.]definition.
Handle shadowing correctly.
- Conditional Components (Per or Adrian)
-
Basic support for evaluating conditions and removing components with condition false is implemented, but connections involving such components are not yet removed.
- Inner/Outer (Per) 90%
-
Inner/outer support is implemented, except for checking that outer elements are subtypes of inner.
- Functions (Per, Adrian, Peter, Mahder) 75%
-
Partial support for functions. Instantiation and typing of functions is implemented. Positional arguments and named arguments are supported. *Vectorization support needs do be adapted*. Preliminary support for reductions is implemented. Support for function trees exists. Allow arrays of unknown size in functions.
- Records (Per) 50%
-
Record bindings should be implemented, #4872.
- Builtin (Per, Mahder, Martin) 80%
-
So far only support for the basic types and time is implemented. Support for all the builtin functions and other builtin things (e.g.
StateSelect (implemented), ExternalObject (implemented), etc.) needs to be implemented. As much as possible should be implemented via ModelicaBuiltin. Tests added. Support for functions with variable number of arguments not yet implemented.
- Reduction operators and Builtin Array functions (Mahder) 80%
-
First the function handling needs to be completed by Mahder.
Adapt the old Static.mo to the new expressions types in the NF.
matrix, vector, scalar, {}, [].
- Typing (Per, Mahder) 100%
-
The infrastructure for typing expressions is implemented, what remains is mostly bug fixing and applying typing when implementing new features.
- Type Checking (Mahder, Peter, Per) 80%
-
Type checking is mostly implemented, but probably needs to be improved to make sure it handles all cases.
- Flattening (Per) 70%
-
Handling of array bindings needs to be improved, otherwise it's mostly working.
- Connection Handling (Per) 60%
-
Handling of connect equations using the DAE and the instance tree.
Basic handling of connections is implemented, missing:
- some stream connectors cases (inStream works, not actualStream)
- expandable connectors
- Unit checking (Arun, Martin, Mahder) 100%
-
Ported the backend unit checking to the new frontend. Added tests. Based on the DAE intermediate form. Some more improvements. Scalability is not that good.
- Operator Overloading (Mahder & Martin) 90%
-
The support for operator overloading from the current front-end (or the previous implementation of the new front-end) should be ported to the new front-end. Most of the Operator Overloading resolution is done, lookup of actual deoverloaded functions is needed.
- Constant Evaluation (Lennart) 90%
-
Constant evaluate structural parameters (minimal) or any other constant/parameter bindings (not by default). Per implemented a new type of DAE component reference that contains links to the instantiated component tree on which one can do evaluation of bindings. Support for evaluating expressions has been implemented except ranges, sizes, records. We should ONLY evaluate what we need and nothing more.
- Function Evaluation (Per) 20%
-
Sometimes to evaluate structural parameters one needs to evaluate functions. This will port the function interpretation from the current front-end to the new front-end.
- Expression Simplification (Per) 50%
-
Support expression simplification needed to transform the expressions in such a way that the backend can handle them.
- Local balance checking (Mahder)
-
This will check the balance checking for each model so that errors can be detected sooner. We had no such support in the current front-end.
- Synchronous Features (BernhardT)
-
The handling of the synchronous features (Clocks, etc) and state machines should be ported from the current front-end to the new front-end.
This functionality needs function, builtin and inner/outer support.
- OMC <-> OMEdit Communication (Adeel, Adrian) 70%
-
The new front-end should be used by OMEdit to query information about a model instantiation. A new OMC API is needed to handle the GUI in a much faster way than with the current front-end. OMEdit should query the instantiated class directly to retrieve components, annotations, etc.
This is a list of all tickets opened for New Instantiation. Note that tickets with id > 4000 were opened specifically during the development of the new front end, while older ones refer to old issues with the old front end that are expected to be fixed by the new one.
Number of tickets: 57
Change History
(79)
Cc: |
Mahder Alemseged Gebremedhin Adrian Pop added
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Component: |
*unknown* → NF - New FrontEnd
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Summary: |
NF core → New FrontEnd
|
Milestone: |
Future → 2.0.0
|
Priority: |
high → blocker
|
Type: |
defect → task
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Component: |
NF - New FrontEnd → New Instantiation
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Description: |
modified (diff)
|
Still some problems with component modifiers. Running the following test script
returns
so for some reason model C is not instantiated at all.