escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2023-10-30T11:15:55Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/664#630 PLCgen: Add continous variables as timers2023-10-30T11:15:55ZAlbert Hofkamp#630 PLCgen: Add continous variables as timersSupport continuous variables with fixed `-1.0` derivative. They can be assigned a non-negative number, and compared for being in a range against a non-negative value. Often that is `t <= 0` which checks for timeout.
Commit can be read o...Support continuous variables with fixed `-1.0` derivative. They can be assigned a non-negative number, and compared for being in a range against a non-negative value. Often that is `t <= 0` which checks for timeout.
Commit can be read one at a time.
Closes #630v2.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/674#676 Make 'plcgen' available from ToolDef2023-10-30T09:59:43ZAlbert Hofkamp#676 Make 'plcgen' available from ToolDefMakes the `plcgen` tool available from ToolDef.
Addresses #676Makes the `plcgen` tool available from ToolDef.
Addresses #676v2.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/676#670 Fix 'test-all' launch configuration.2023-10-30T08:28:23ZDennis Hendriks#670 Fix 'test-all' launch configuration.- Wait for a test to complete before starting the next one.
Closes #670- Wait for a test to complete before starting the next one.
Closes #670v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/672#678 Free dropped bits for CifBddBitVector resize.2023-10-24T20:09:07ZFerdie Reijnen#678 Free dropped bits for CifBddBitVector resize.Closes #678Closes #678v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/667#593 Add annotations + doc annotations info to CIF reference manual.2023-10-24T07:17:50ZDennis Hendriks#593 Add annotations + doc annotations info to CIF reference manual.Addresses #593Addresses #593v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/670#648 CIF metamodel: rename parameters/params to arguments.2023-10-21T07:07:33ZDennis Hendriks#648 CIF metamodel: rename parameters/params to arguments.* For `ComponentInst` and `FunctionCallExpression`.
* Went through entire Git repo to make it more consistent.
* Quite some changes, but hopefully easy to review per commit.
Closes #648* For `ComponentInst` and `FunctionCallExpression`.
* Went through entire Git repo to make it more consistent.
* Quite some changes, but hopefully easy to review per commit.
Closes #648v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/671#661 Large expressions in exception reporting crash the CIF simulator2023-10-16T18:39:09ZMartijn Goorden#661 Large expressions in exception reporting crash the CIF simulatorCloses #661.Closes #661.v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/669#671 Explain 2FA for pushing to Eclipse Foundation GitLab in dev docs.2023-10-16T15:24:07ZDennis Hendriks#671 Explain 2FA for pushing to Eclipse Foundation GitLab in dev docs.Closes #671Closes #671v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/666#524 Change color of warnings in Console2023-10-16T06:29:57ZFerdie Reijnen#524 Change color of warnings in ConsoleCloses #524
Dark mode:
![image](/uploads/908fd96a12fab3767dca271ccafe0b48/image.png)
Contrast ratio 8.26 : 1
Light mode:
![image](/uploads/439f83e817dafa9af24dd17113515637/image.png)
Contrast ratio 4.01 : 1 (Same as the red color we u...Closes #524
Dark mode:
![image](/uploads/908fd96a12fab3767dca271ccafe0b48/image.png)
Contrast ratio 8.26 : 1
Light mode:
![image](/uploads/439f83e817dafa9af24dd17113515637/image.png)
Contrast ratio 4.01 : 1 (Same as the red color we use, but maybe we want more contrast, it does not pass the WCAG AA test, which requires 4.5)
Let me know what you think. If we don't like a separate warning stream, that is also fine.v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/665#666 Eliminate custom plcgen warning class.2023-10-16T05:17:14ZAlbert Hofkamp#666 Eliminate custom plcgen warning class.Replace the custom PLCgen `WarnOutput` class by the `common.java.output.WarnOutput` class.
Addresses #666Replace the custom PLCgen `WarnOutput` class by the `common.java.output.WarnOutput` class.
Addresses #666v2.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/668#593 CifAnnotationsTypeChecker: JavaDoc/comment fixes.2023-10-15T12:10:52ZDennis Hendriks#593 CifAnnotationsTypeChecker: JavaDoc/comment fixes.Addresses #593Addresses #593v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/663#655 Bug in CifToSynthesisConverter for resizing value vector2023-10-09T08:36:11ZFerdie Reijnen#655 Bug in CifToSynthesisConverter for resizing value vectorCloses #665Closes #665v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/618#611 CIF simulator handles large expressions2023-10-06T07:12:13ZMartijn Goorden#611 CIF simulator handles large expressionsI implemented a new data structure `ExprCodeGeneratorResult` that collects information while generating code for expressions. It encapsulates parts of the expression in new methods during the analysis of the expression tree. It returns t...I implemented a new data structure `ExprCodeGeneratorResult` that collects information while generating code for expressions. It encapsulates parts of the expression in new methods during the analysis of the expression tree. It returns this information back to the caller of `ExprCodeGenerator` such that the caller can include these additional methods. (`ExprCodeGenerator` itself is not handling the actual file content, so cannot directly write the methods to file once it creates a new one.)
The current implementation solves the problem in #611. For the model [SupConnectTwo.cif](/uploads/b94dc7dea97b7e803612efd4f2eca1fa/SupConnectTwo.cif), it generates [Aut_sup.java](/uploads/454589dc1d7dce78e98eb94a8abfa331/Aut_sup.java), which can be sucessfully parsed. Furthermore, the current changes still pass all original test cases.
I would like to get some feedback on this idea, hence the draft labeling. Some things to take into account.
- Only the guard code generation takes the new data structure correctly into account. Other places that call methods from `ExprCodeGenerator` don't do it fully correctly (as long as no method for a sub expression is generated, it works fine). If the approach is fine, I will adjust these other calls as well.
- The generation of the new methods code might possibly be also done in the new class `ExprCodeGeneratorResult`. The caller of methods in `ExprCodeGenerator` than only need to insert these new methods in the right place in their files.
- If more than two `ExprCodeGeneratorResult` objects are to be merge, the check whether they together exceed the limit is done only after merging them (and thus only a single new method will be created). Maybe if a subset of them already exceed the limit, they should already be encapsulated by a new method before continuoing with the merge.
- The current limit is not optimized. For the model above, it works with `limit = 1,000`, but not with `limit = 10,000`.
- Originally, when the evaluation of a guard fails during run-time, an exception is thrown that includes the full guard. This is also not possible for very long guards (you will get a `static string is too long` error). What would be a good alternative exception text that can indicate which guard causes the problem.
- No new test case is yet included.
Best reviewed per commit, but some later commits fix some problems though.
Closes #611v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/656#89 #331 Explicitly choose exit behavior of Application.run() functions.2023-12-25T07:00:12ZPatrick van Berkel#89 #331 Explicitly choose exit behavior of Application.run() functions.I removed dependence on implicit exit behavior of `Application.run()` based on the presents of OSGi Platform.
Now `Application.run()` only calls `System.exit()` if the calling function is called with `true` as `exit` argument. When `exi...I removed dependence on implicit exit behavior of `Application.run()` based on the presents of OSGi Platform.
Now `Application.run()` only calls `System.exit()` if the calling function is called with `true` as `exit` argument. When `exit` argument equals `false` the `Application.run()` method returns the applications exit code.
Closes #89
Closes #331
**Executed tests.**
_Standard unit test on Linux only._
- [x] chi/org.eclipse.escet.chi.codegen/src/org/eclipse/escet/chi/codegen/JavaCodeGenerator.java
- [x] tooldef/org.eclipse.escet.tooldef.interpreter/src/org/eclipse/escet/tooldef/interpreter/ToolDefBasedPluginUnitTest.java
_Command line without paramaters on Linux and Windows._
- [x] chisim*
chi/org.eclipse.escet.chi.simulator/src/org/eclipse/escet/chi/simulator/SimulatorApplication.java
- [x] cif2cif*
cif/org.eclipse.escet.cif.cif2cif.app/src/org/eclipse/escet/cif/cif2cif/app/CifToCifApp.java
- [x] cif2mcrl2*
cif/org.eclipse.escet.cif.cif2mcrl2/src/org/eclipse/escet/cif/cif2mcrl2/Cif2Mcrl2Application.java
- [x] cif2plc*
cif/org.eclipse.escet.cif.cif2plc/src/org/eclipse/escet/cif/cif2plc/CifToPlcApp.java
- [x] cif2supremica*
cif/org.eclipse.escet.cif.cif2supremica/src/org/eclipse/escet/cif/cif2supremica/CifToSupremicaApp.java
- [x] cif2uppaal*
cif/org.eclipse.escet.cif.cif2uppaal/src/org/eclipse/escet/cif/cif2uppaal/CifToUppaalApp.java
- [x] cif2yed*
cif/org.eclipse.escet.cif.cif2yed/src/org/eclipse/escet/cif/cif2yed/CifToYedApp.java
- [x] cifcodegen*
cif/org.eclipse.escet.cif.codegen/src/org/eclipse/escet/cif/codegen/CodeGenApp.java
- [x] cifcontrollercheck*
cif/org.eclipse.escet.cif.controllercheck/src/org/eclipse/escet/cif/controllercheck/ControllerCheckApp.java
- [x] cifdatasynth*
cif/org.eclipse.escet.cif.datasynth/src/org/eclipse/escet/cif/datasynth/CifDataSynthesisApp.java
- [x] cifabstr*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/AutomatonAbstractionApplication.java
- [x] cifctrlchk*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ControllabilityCheckApplication.java
- [x] cifdfamin*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/DfaMinimizationApplication.java
- [x] ciflngeqv*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/LanguageEquivalenceCheckApplication.java
- [x] cifnfadfa*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/NfaToDfaApplication.java
- [x] cifncchk*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/NonconflictingCheckApplication.java
- [x] cifobschk*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ObserverCheckApplication.java
- [x] cifproj*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/ProjectionApplication.java
- [x] cifsupsynth*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SupervisorSynthesisApplication.java
- [x] cifprod*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SynchronousProductApplication.java
- [x] cifsynthanalys*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/SynthesisAnalysisApplication.java
- [x] ciftrim*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/TrimApplication.java
- [x] ciftrimchk*
cif/org.eclipse.escet.cif.eventbased/src/org/eclipse/escet/cif/eventbased/apps/TrimCheckApplication.java
- [x] cifevtdis*
cif/org.eclipse.escet.cif.eventdisabler/src/org/eclipse/escet/cif/eventdisabler/EventDisablerApplication.java
- [x] cifexplorer*
cif/org.eclipse.escet.cif.explorer/src/org/eclipse/escet/cif/explorer/app/ExplorerApplication.java.
See Error **[1]**. Solved in https://gitlab.eclipse.org/eclipse/escet/escet/-/issues/658
- [x] cifmerge*
cif/org.eclipse.escet.cif.merger/src/org/eclipse/escet/cif/merger/CifMergerApp.java
- [x] cifsim*
cif/org.eclipse.escet.cif.simulator/src/org/eclipse/escet/cif/simulator/CifSimulatorApp.java
- [x] dsmclustering*
common/org.eclipse.escet.common.dsm.app/src/org/eclipse/escet/common/dsm/app/DsmApplication.java
- [x] setextgen*
setext/org.eclipse.escet.setext.generator/src/org/eclipse/escet/setext/generator/SeTextGeneratorApp.java
- [x] tooldef*
tooldef/org.eclipse.escet.tooldef.interpreter/src/org/eclipse/escet/tooldef/interpreter/ToolDefInterpreterApp.java
_Tested by any of the scripts and Eclipse Cif Simulator on Linux and Windows:_
- [x] common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/AppEclipseApplication.java
- [x] common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/Application.java
_Run Eclipse Cif Simulator on Linux and Windows:_
- [x] common/org.eclipse.escet.common.app.framework/src/org/eclipse/escet/common/app/framework/ChildAppStarter.java
- [x] common/org.eclipse.escet.common.eclipse.ui/src/org/eclipse/escet/common/eclipse/ui/BaseFileCommandHandler.java
_Standalone unit-tests on Linux only._
- [x] common/org.eclipse.escet.common.app.framework/src-test/org/eclipse/escet/common/app/framework/ReportExceptionTest.java
_Run as java application on Linux only._
- [x] cif/org.eclipse.escet.cif.multilevel/src/org/eclipse/escet/cif/multilevel/MultilevelApp.java
- [x] cif/org.eclipse.escet.cif.plcgen/src/org/eclipse/escet/cif/plcgen/CifPlcGenApp.java
**[1] error running cifexplorer.**
The `cifexplorer `script currently references an incorrect package. `org.eclipse.escet.cif.explorer.app` should be `org.eclipse.escet.cif.explorer`. This is an existing problem.
```
!SESSION 2023-09-23 13:45:20.473 -----------------------------------------------
eclipse.buildId=unknown
java.version=17.0.5
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en
Framework arguments: -application org.eclipse.escet.common.app.framework.application org.eclipse.escet.cif.explorer.app org.eclipse.escet.cif.explorer.app.ExplorerApplication
Command-line arguments: -os linux -ws gtk -arch x86_64 -application org.eclipse.escet.common.app.framework.application org.eclipse.escet.cif.explorer.app org.eclipse.escet.cif.explorer.app.ExplorerApplication
!ENTRY org.eclipse.osgi 4 0 2023-09-23 13:45:21.540
!MESSAGE Application error
!STACK 1
OSGi bundle "org.eclipse.escet.cif.explorer.app" not found.
at org.eclipse.escet.common.app.framework.AppEclipseApplication.start(AppEclipseApplication.java:64)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
```
The solution is to change the script `cifexplorer` to:
```
... -application org.eclipse.escet.common.app.framework.application -nosplash org.eclipse.escet.cif.explorer org.eclipse.escet.cif.explorer.app.ExplorerApplication $*
```v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/624#631 Construct non-app-framework output2023-10-04T05:18:41ZAlbert Hofkamp#631 Construct non-app-framework outputWhile the code seems sufficient for now, there are some higher level things to discuss I think.
- I opted for splitting the output streams, so you don't have to handle all streams if the code has no use for it. This also allows some int...While the code seems sufficient for now, there are some higher level things to discuss I think.
- I opted for splitting the output streams, so you don't have to handle all streams if the code has no use for it. This also allows some interface re-use which is nice.
- As the split causes the code to have an instance for a particular output stream, the suffix idea `dout`, `out`, `iout` became less useful, and I changed it to
| Old function | New function |
| ----------------- | ----------------------- |
| `warn(">%s<", x)` | `warn.line(">%s<", x);` |
| `iout()` | `out.inc()` |
| `ddbg()` | `dbg.dec()` |
| `dowarn()` | `warn.isEnabled()` |
Where `warn`, `out`, and `dbg` represent the output stream object with the new function.
- I haven't changed the `plcgen` `WarnOutput` class yet.
- Does it make sense to keep the old `OutputProvider` functions for anything else besides backward compatibility? (that is, should they be marked deprecated?)
- Should the interface be changed more than the above (now is the time if we want to make more adjustments if so desired).
- Not sure where I did it, but one time I add a count to the output primitive that functioned as pre- increment or decrement, eg `dbg.line(1, "text);` which is equivalent to `dbg.inc(); dbg,out("text");`
- Add a count to increment and decrement?
- Is there still value in specifying 4 space indent steps? Afaik we use the default everywhere so the feature seems unused.
I'll change the DSM clustering code to use these new functions as an example soon.
Closes #631v2.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/654#650 PLCgen: Add input/output support2023-10-03T05:09:43ZAlbert Hofkamp#650 PLCgen: Add input/output supportAdds input/output capabilities. Readable by commit.
Closes #650
Addresses #397Adds input/output capabilities. Readable by commit.
Closes #650
Addresses #397v2.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/661#654 Prepare Git repo for v2.0 development2023-10-02T16:42:19ZDennis Hendriks#654 Prepare Git repo for v2.0 developmentCloses #654Closes #654v2.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/660#618 develop to master for v1.02023-09-30T08:32:49ZDennis Hendriks#618 develop to master for v1.0Addresses #618Addresses #618v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/659#618 Update release notes for v1.0.2023-09-30T08:12:09ZDennis Hendriks#618 Update release notes for v1.0.Addresses #618Addresses #618v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/658#617 develop to master for v1.0-RC12023-09-26T16:29:59ZDennis Hendriks#617 develop to master for v1.0-RC1Addresses #617Addresses #617v1.0