Opened 8 years ago
Last modified 4 years ago
#4138 closed task
New FrontEnd — at Version 55
Reported by: | Per Östlund | Owned by: | Per Östlund |
---|---|---|---|
Priority: | blocker | Milestone: | 1.17.0 |
Component: | New Instantiation | Version: | |
Keywords: | Cc: | Mahder Alemseged Gebremedhin, Adrian Pop |
Description (last modified by )
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. The handling of equations, algorithms and expressions needs to be expanded.
- 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) 60%
- 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) 90%
-
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)
- No support for conditional components implemented. This needs support from constant/function evaluation and expression simplification. It can be implemented after typing together with handling of component bindings.
- 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.
- Records (Mahder) 85%
- Support for records and for record constructors in the works.
- Builtin (Per, Mahder) 50%
- 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, ExternalObject, 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 (Mahder, Peter) 70%
- Quite a lot of typing is already implemented, but it needs to be expanded to handle all kinds of expressions and so on.
- Type Checking (Mahder, Peter, Per) 65%
- Some parts of the type checking module from the "old new frontend" is being used to type check binary expressions at the moment. Everything in NFTypeCheck that's not used is commented out since some of it doesn't compile any more. We need to investigate if more of the old code can be reused, and implement missing/nonreusable parts.
- Flattening (Per) 40%
- Expansion of array bindings is currently broken and need to be fixed. Subscripting needs to be improved, and the module in general needs to be expanded to keep up with the phases before it.
- Connection Handling (Adrian) 60%
- Handling of connect equations using the DAE and the instance tree.
- Unit checking (Arun) 100%
- Ported the backend unit checking to the new frontend. Added tests. Based on the DAE intermediate form.
- Operator Overloading (Mahder & Martin) 70%
- 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 (Lennart) 1%
- 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 (Lennart) 20%
- Expression simplification is needed together with constant/function evaluation to evaluate structural parameters. This needs to be a separate package so that can be reused in some other parts of the compiler. Support for expression simplification has been implemented except for functions, array slices.
- 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.
Change History (56)
comment:1 by , 8 years ago
Cc: | added |
---|
comment:2 by , 8 years ago
Description: | modified (diff) |
---|
comment:3 by , 8 years ago
Description: | modified (diff) |
---|
follow-ups: 5 9 comment:4 by , 8 years ago
follow-up: 6 comment:5 by , 8 years ago
Replying to casella:
Still some problems with component modifiers.
I am well aware of that, and have already fixed this particular issue locally a while ago. At the moment I'm not really interested in bug reports though, the new instantiation is not ready for public testing yet.
follow-up: 7 comment:6 by , 8 years ago
Replying to perost:
At the moment I'm not really interested in bug reports though, the new instantiation is not ready for public testing yet.
Q1: Can you give a reasonable estimate of when this will be possible?
Q2: Is the interface towards the other tasks of Phase 2 already stabilized? If not, when will it reasonably be?
comment:7 by , 8 years ago
Replying to casella:
Q1: Can you give a reasonable estimate of when this will be possible?
No
Q2: Is the interface towards the other tasks of Phase 2 already stabilized? If not, when will it reasonably be?
Maybe
follow-up: 11 comment:10 by , 8 years ago
However, instantiating P.S in the attached test case still fails
by , 8 years ago
follow-up: 12 comment:11 by , 8 years ago
Replying to casella:
However, instantiating P.S in the attached test case still fails
It works fine for me, are you using the latest nightly build?
comment:12 by , 8 years ago
comment:13 by , 8 years ago
Description: | modified (diff) |
---|
comment:14 by , 8 years ago
Description: | modified (diff) |
---|
comment:15 by , 8 years ago
Component: | *unknown* → NF - New FrontEnd |
---|---|
Description: | modified (diff) |
comment:16 by , 8 years ago
Description: | modified (diff) |
---|
comment:17 by , 8 years ago
Description: | modified (diff) |
---|
comment:18 by , 8 years ago
Description: | modified (diff) |
---|---|
Summary: | NF core → New FrontEnd |
comment:19 by , 8 years ago
Milestone: | Future → 2.0.0 |
---|---|
Priority: | high → blocker |
Type: | defect → task |
comment:20 by , 8 years ago
Description: | modified (diff) |
---|
comment:21 by , 8 years ago
Description: | modified (diff) |
---|
Initial support for enumerations is now implemented.
comment:24 by , 8 years ago
Description: | modified (diff) |
---|
comment:25 by , 8 years ago
Description: | modified (diff) |
---|
comment:26 by , 8 years ago
Description: | modified (diff) |
---|
comment:27 by , 8 years ago
Description: | modified (diff) |
---|
comment:28 by , 8 years ago
Description: | modified (diff) |
---|
comment:29 by , 8 years ago
Description: | modified (diff) |
---|
comment:30 by , 8 years ago
Description: | modified (diff) |
---|
comment:31 by , 8 years ago
Description: | modified (diff) |
---|
comment:32 by , 8 years ago
Description: | modified (diff) |
---|
comment:33 by , 8 years ago
Description: | modified (diff) |
---|
comment:34 by , 8 years ago
Description: | modified (diff) |
---|
comment:35 by , 8 years ago
Description: | modified (diff) |
---|
comment:36 by , 8 years ago
Description: | modified (diff) |
---|
comment:37 by , 8 years ago
Description: | modified (diff) |
---|
comment:38 by , 8 years ago
Description: | modified (diff) |
---|
comment:39 by , 8 years ago
Description: | modified (diff) |
---|
follow-ups: 41 45 comment:40 by , 8 years ago
I just tried out ScalableTestSuite.Elementary.SimpleODE.Models.CascadedFirstOrder:
model CascadedFirstOrder parameter Integer N = 10 "Order of the system"; parameter Modelica.SIunits.Time T = 1 "System delay"; final parameter Modelica.SIunits.Time tau = T/N "Individual time constant"; Real x[N] (each start = 0, each fixed = true); equation tau*der(x[1]) = 1 - x[1]; for i in 2:N loop tau*der(x[i]) = x[i-1] - x[i]; end for; end CascadedFirstOrder;
but it still doesn't work, I get
Error: Type mismatch for positional argument 1 in der(x=x[1]). The argument has type: Real[10] expected type: Real
This is a very basic model, and it doesn't use arrays in any fancy way. This error looks to me more like a bug than a missing feature.
Would you mind fixing this issue so we can start getting some results from testing the ScalableTestSuite with the new front-end?
Thanks
Francesco
comment:41 by , 8 years ago
Replying to casella:
This is a very basic model, and it doesn't use arrays in any fancy way. This error looks to me more like a bug than a missing feature.
Subscripting is not implemented yet, so it is actually a missing feature. It's high up on my todo list, but other things currently has higher priority for me.
comment:42 by , 8 years ago
OK. I interpreted "Subscripting needs to be improved" as "there is already some subscripting implemented" :)
comment:43 by , 7 years ago
Description: | modified (diff) |
---|
comment:44 by , 7 years ago
Description: | modified (diff) |
---|
Updated description for redeclares (better in general, but class extends/element redeclares currently broken) and imports.
comment:45 by , 7 years ago
Replying to casella:
Would you mind fixing this issue so we can start getting some results from testing the ScalableTestSuite with the new front-end?
This model should start working in about five minutes, once Hudson pulls in my latest changes.
comment:47 by , 7 years ago
Description: | modified (diff) |
---|
comment:48 by , 7 years ago
Description: | modified (diff) |
---|
comment:49 by , 7 years ago
Description: | modified (diff) |
---|
comment:50 by , 7 years ago
Description: | modified (diff) |
---|
comment:51 by , 7 years ago
Description: | modified (diff) |
---|
comment:52 by , 7 years ago
Description: | modified (diff) |
---|
comment:53 by , 7 years ago
Description: | modified (diff) |
---|
comment:54 by , 7 years ago
Component: | NF - New FrontEnd → New Instantiation |
---|
Move all tickets from NF - New Frontend to New Instantiation so we don't have two different categories for the same thing.
comment:55 by , 7 years ago
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.