Opened 8 years ago

Closed 4 years ago

#4138 closed task (fixed)

New FrontEnd

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 Francesco Casella)

This ticket is tracking the progress on the the new frontend. Some documentation on the new frontend development is available on wiki:NewFrontEnd.

The new frontend development is almost complete. It is used by default by OMEdit (with the old frontend as fallback in case of problems) since version 1.14.0, and already delivers better performance than the old frontend in almost all cases. It will be the default one also for the command line compiler from version 1.17.0.

All 425 models of the MSL are handled successfully by the new front end, see report. There are a handful of models which are not handled correctly yet, but that is not due to the new frontend, see #5288.

The coverage with some other selected open-source library is reported in these diagrams. Note that until 14 Dec 2020 the libraries were tested with the old frontend:

https://libraries.openmodelica.org/branches/history/master/PlanarMechanics.svg

https://libraries.openmodelica.org/branches/history/master/PNlib.svg

https://libraries.openmodelica.org/branches/history/master/Buildings_latest.svg

https://libraries.openmodelica.org/branches/history/master/HanserModelica.svg

https://libraries.openmodelica.org/branches/history/master/PowerSystems.svg

https://libraries.openmodelica.org/branches/history/master/ThermoPower.svg

https://libraries.openmodelica.org/branches/history/master/ThermoSysPro.svg

This is a list of all tickets opened for the new frontend (New Instantiation module). 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

Milestone: 1.19.0 (2 matches)

Ticket Summary Status Owner Type Priority Version
#2447 Let OM automatically load packages as specified in import statements reopened Per Östlund enhancement high trunk
#6126 Error while compiling wind turbine model from PowerSystems library assigned Per Östlund defect blocker

Milestone: 2.0.0 (22 matches)

Ticket Summary Status Owner Type Priority Version
#2385 Missing variable declarations in instantiated model when using expandable connectors reopened Adrian Pop defect high trunk
#2387 Operator overloading fails for matrices assigned Per Östlund defect high trunk
#2484 Expandable connector resolution misses components assigned Per Östlund defect blocker trunk
#3186 Partial binding of record sub-components in functions are lost assigned Per Östlund defect critical trunk
#3221 Equation count of models containing expandable connectors assigned Mahder Alemseged Gebremedhin defect normal trunk
#3977 Better diagnostics for non-balanced models new Lennart Ochel enhancement blocker
#4120 Out-of-bounds array elements undetected by front-end assigned Per Östlund defect blocker
#4442 Incorrect evaluation of inner/outer and record dependencies assigned Per Östlund defect high v1.11.0
#4496 Complex 'sum' does not work assigned Per Östlund defect blocker
#4515 Automatic inference of nominal attributes for scaling new Per Östlund discussion high
#4960 Evaluate all parameters except some new Per Östlund enhancement high
#5061 [NF] Are public parameters allowed in functions by the Modelica spec? new Per Östlund defect high
#5240 NFEvalFunction.evaluateExternal is not yet implemented reopened Per Östlund defect blocker
#5597 Two examples of the new Modelica.Electrical.Batteries package do not work with the new frontend new Per Östlund defect blocker v1.14.0-dev-nightly
#5605 Parameter with only start value not accepted new Per Östlund defect blocker
#5837 Unit checking is not performed on operator record equations new Per Östlund defect blocker
#5847 Constant is used without having been given a value new Per Östlund defect blocker v1.16.0-dev
#5866 Update Save Total to NF new Per Östlund defect blocker
#6047 The NF incorrectly infers the variability of a function call in Modelica.Media new Per Östlund defect blocker
#6114 Unit checking scales with O(2^N) in case of large expressions involving +-*/ operators assigned Per Östlund defect normal v1.16.0-dev
#6149 The NF accepts illegal type declarations? new Per Östlund defect blocker
#6383 Omc doesn't check correctly the constraining-clause new Per Östlund defect blocker 1.18.0-dev

Milestone: 2.1.0 (14 matches)

Ticket Summary Status Owner Type Priority Version
#1080 Constraining type on redeclarations (from MathCore) new krsta defect normal trunk
#1842 Illegal redeclare should be rejected by the NF with appropriate error message assigned Per Östlund defect high
#2010 Prefix rules needs more work in new instantiation new Per Östlund defect high trunk
#2153 Better analysis for function completion new Per Östlund defect high trunk
#2276 detecting size mismatch for output arguments in functions reopened somebody defect normal trunk
#3121 Missing bindings in flattened operator overloading example assigned Per Östlund defect low trunk
#4843 NF doesn't evaluate size expression of function input parameters new Per Östlund defect normal v1.13.0-dev-nightly
#4901 The NF does not check if redeclared functions are legal new Per Östlund defect high
#4905 Restriction on input connection is not enforced by OMC assigned Per Östlund defect high
#5178 Incorrect Warning - not balanced connector reopened Per Östlund defect normal
#5334 Check for wrong annotations new Per Östlund enhancement high
#5545 Improve diagnostics for wrong connectors new Per Östlund enhancement high
#5667 Arrays of records insufficiently type checked new Per Östlund defect high v1.14.0-dev-nightly
#6163 Constrainedby clause not verified by the NF new Per Östlund defect high

Milestone: Future (6 matches)

Ticket Summary Status Owner Type Priority Version
#1747 Implement checks for all connection rules in chapter 9 new Per Östlund task low
#2367 Record with vectors, zeros(), size() accepted Adrian Pop defect high trunk
#4648 Add support for annotation for turning off replaceable check new Per Östlund enhancement normal v1.13.0-dev-nightly
#4908 [NF] Issues with inner/outer with redeclare new Per Östlund defect high
#5579 New Frontend does not check for circular dependencies in parameter bindings new Per Östlund defect high
#5688 Use of removed conditional component not reported new Per Östlund defect normal

Milestone: None (13 matches)

Ticket Summary Status Owner Type Priority Version
#1939 Duplicate class detection not working when loading MSL reopened Per Östlund defect normal trunk
#4526 Propagate displayUnits on simple equations new Mahder Alemseged Gebremedhin enhancement high
#4603 Provide support for start-value selection according to the Modelica Specification assigned Karim Adbdelhak defect high
#5474 [NF] Lookup of inner class fails new Per Östlund defect high
#5598 redeclaration of input as output with NF assigned Per Östlund discussion normal v1.14.0-dev-nightly
#5730 Issue with operator record constructors in NF new Per Östlund defect high
#5852 getCommandLineOptions fails with newInst new Per Östlund defect normal v1.16.0-dev
#6213 Lookup in wrong scope when redeclaring function field in a function accepted Per Östlund defect high v1.17.0-dev
#6293 Function non-inputs are initialized in the wrong order new Per Östlund defect low v1.17.0-dev
#6325 Support for ExternData assigned Per Östlund defect high 1.16.0
#6373 Electrical Quasistationary MutualInductor in standard library not working in OM assigned Per Östlund defect critical 1.16.2
#6390 Cannot extend from RealOutput new Per Östlund defect low 1.16.2
#6423 Optionally list all empty connection sets new Per Östlund enhancement high 1.16.2


Attachments (1)

P.mo (729 bytes ) - added by Francesco Casella 8 years ago.

Download all attachments as: .zip

Change History (91)

comment:1 by Per Östlund, 8 years ago

Cc: Mahder Alemseged Gebremedhin Adrian Pop added

comment:2 by Per Östlund, 8 years ago

Description: modified (diff)

comment:3 by Per Östlund, 8 years ago

Description: modified (diff)

comment:4 by Francesco Casella, 8 years ago

Still some problems with component modifiers. Running the following test script

loadString("
package P
  model A
    parameter Real p;
  end A;
  model B
    parameter Real q = 2;
    A a1(p = q);
  end B;
  model C
    parameter Real q = 2;
    A a1(p = q);
    A a2(p = q);
  end C;
end P;
");
setCommandLineOptions("-d=newInst");
instantiateModel(P.B);
instantiateModel(P.C);

returns

true
true
"class B
  parameter Real q = 2;
  parameter Real a1.p = q;
end B;
"
""

so for some reason model C is not instantiated at all.

in reply to:  4 ; comment:5 by Per Östlund, 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.

in reply to:  5 ; comment:6 by Francesco Casella, 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?

in reply to:  6 comment:7 by Per Östlund, 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

comment:8 by Per Östlund, 8 years ago

Class modifiers have been implemented now, but needs more testing.

in reply to:  4 comment:9 by Francesco Casella, 8 years ago

The test case reported in comment:4 now produces the expected result

comment:10 by Francesco Casella, 8 years ago

However, instantiating P.S in the attached test case still fails

by Francesco Casella, 8 years ago

Attachment: P.mo added

in reply to:  10 ; comment:11 by Per Östlund, 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?

in reply to:  11 comment:12 by Francesco Casella, 8 years ago

Replying to perost:

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?

I thought so, but I wasn't. With OpenModelica-v1.11.0-dev-288-g2ccad20-64bit, it works fine for me also :)

comment:13 by Per Östlund, 8 years ago

Description: modified (diff)

comment:14 by Per Östlund, 8 years ago

Description: modified (diff)

comment:15 by Adrian Pop, 8 years ago

Component: *unknown*NF - New FrontEnd
Description: modified (diff)

comment:16 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:17 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:18 by Adrian Pop, 8 years ago

Description: modified (diff)
Summary: NF coreNew FrontEnd

comment:19 by Adrian Pop, 8 years ago

Milestone: Future2.0.0
Priority: highblocker
Type: defecttask

comment:20 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:21 by Per Östlund, 8 years ago

Description: modified (diff)

Initial support for enumerations is now implemented.

Last edited 8 years ago by Per Östlund (previous) (diff)

comment:22 by Francesco Casella, 8 years ago

Description: modified (diff)

Added link to wiki page

comment:23 by Adrian Pop, 8 years ago

Description: modified (diff)

Small status update.

comment:24 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:25 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:26 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:27 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:28 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:29 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:30 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:31 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:32 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:33 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:34 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:35 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:36 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:37 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:38 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:39 by Adrian Pop, 8 years ago

Description: modified (diff)

comment:40 by Francesco Casella, 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

in reply to:  40 comment:41 by Per Östlund, 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 Francesco Casella, 8 years ago

OK. I interpreted "Subscripting needs to be improved" as "there is already some subscripting implemented" :)

comment:43 by Mahder Alemseged Gebremedhin, 8 years ago

Description: modified (diff)

comment:44 by Per Östlund, 8 years ago

Description: modified (diff)

Updated description for redeclares (better in general, but class extends/element redeclares currently broken) and imports.

in reply to:  40 comment:45 by Per Östlund, 8 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:46 by Francesco Casella, 8 years ago

Very good!

comment:47 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:48 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:49 by Per Östlund, 7 years ago

Description: modified (diff)

comment:50 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:51 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:52 by Per Östlund, 7 years ago

Description: modified (diff)

comment:53 by Per Östlund, 7 years ago

Description: modified (diff)

comment:54 by Per Östlund, 7 years ago

Component: NF - New FrontEndNew 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 Adrian Pop, 7 years ago

Description: modified (diff)

comment:56 by Francesco Casella, 7 years ago

Description: modified (diff)

comment:57 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:58 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:59 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:60 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:61 by Per Östlund, 7 years ago

Description: modified (diff)

comment:62 by Per Östlund, 7 years ago

Description: modified (diff)

comment:63 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:64 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:65 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:66 by Mahder Alemseged Gebremedhin, 7 years ago

Description: modified (diff)

comment:67 by Per Östlund, 7 years ago

Description: modified (diff)

comment:68 by Per Östlund, 7 years ago

Description: modified (diff)

comment:69 by Per Östlund, 7 years ago

Description: modified (diff)

comment:70 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:71 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:72 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:73 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:74 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:75 by Francesco Casella, 7 years ago

Description: modified (diff)

comment:76 by Francesco Casella, 7 years ago

Description: modified (diff)

comment:77 by Adrian Pop, 7 years ago

Description: modified (diff)

comment:78 by Adrian Pop, 6 years ago

Description: modified (diff)

Overconstrained connection graph is now implemented via #4966.

comment:79 by Adrian Pop, 6 years ago

Description: modified (diff)

comment:80 by Francesco Casella, 6 years ago

Description: modified (diff)

comment:81 by Francesco Casella, 6 years ago

Description: modified (diff)

comment:82 by Francesco Casella, 6 years ago

Description: modified (diff)

comment:83 by Francesco Casella, 5 years ago

Description: modified (diff)

comment:84 by Francesco Casella, 4 years ago

Description: modified (diff)

comment:85 by Francesco Casella, 4 years ago

Status update as of 24 Sep 2020.

The new front end development continues, the functionality of this module has now overcome the old front end, which is now starting to become obsolete.

The new front end is already the default choice in OMEdit since version 1.14.0, with automatic fallback to the old frontend in case of problems. The command line version of the compiler still uses the old frontend as default, and requires the --newInst flag to use the new one. The plan is to make the new front end the default choice also from the command line starting with version 1.17.0, due December 2020.

The fallback option will probably be removed from OMEdit at that point, because it will mostly be advising users to try the old front end in response to models which are in fact broken. Users that will still need to use the old frontend with their models will be able to do that by setting the option in the simulation settings window. However, please note that the old frontend has no longer been maintained since 2019.

Last edited 4 years ago by Francesco Casella (previous) (diff)

comment:86 by Francesco Casella, 4 years ago

Status update as of Dec 21 2020.

The new frontend was made the default on 14 Dec 2020. There are several regressions w.r.t. the old frontend on older libraries, because they contain invalid Modelica code. Those will not be addressed. Regressions in the latest versions of currently maintained libraries should be fixed in time for the 1.17.0 release.

comment:87 by Francesco Casella, 4 years ago

Description: modified (diff)

comment:88 by Francesco Casella, 4 years ago

Description: modified (diff)

comment:89 by Francesco Casella, 4 years ago

This regression report shows the difference between the old and the new frontend.

There are 1000 improvements in the library testsuite, due to the better capability of the new frontend to handle complex Modelica models, and also 1432 performance improvements, due to the much faster operation of the new front end compared to the old one.

There are 673 regressions, mostly in older libraries that contain illegal Modelica code that the new front end rejects because of its stricter policy of conformance to the Modelica specification.

Last edited 4 years ago by Francesco Casella (previous) (diff)

comment:90 by Francesco Casella, 4 years ago

Milestone: 2.0.01.17.0
Resolution: fixed
Status: newclosed

The new front end becomes the default one with release 1.17.0, -d=newInst is no longer necessary to use it. All test reports now use it, except the oldInst branch.

The development continues, but the transition phase from the old front-end to the new one is now complete, regarding the compilation of simulation models.

The old front end is still used for bootstrapping and for most API functions. Regarding the former, there is currently no urgent need to supersede it. Regarding the latter, the API functions should gradually be switched to use the old one, for much faster performance. This has already been done in some critical cases, the work will continue there.

With release 1.17.0, we can close this ticket for good.

Note: See TracTickets for help on using tickets.