escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2023-08-11T07:03:11Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/627#629 Small improvements for CsvParser.2023-08-11T07:03:11ZDennis Hendriks#629 Small improvements for CsvParser.The CSV parser was added while I was on holidays. I looked at it, and made several improvements, including some bugfixes. See the individual commits.
Closes #629The CSV parser was added while I was on holidays. I looked at it, and made several improvements, including some bugfixes. See the individual commits.
Closes #629v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/626#601 Addressing some small follow-ups for the sequencing algorithm2023-08-09T08:04:58ZDennis Hendriks#601 Addressing some small follow-ups for the sequencing algorithmI last reviewed it before I went on holidays. It since got merged, but I found a few small things in the commits added since I last reviewed, and some of my comments weren't completely addressed. I addressed all that here.
Closes #601I last reviewed it before I went on holidays. It since got merged, but I found a few small things in the commits added since I last reviewed, and some of my comments weren't completely addressed. I addressed all that here.
Closes #601v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/625#632 multi-level: Construct multi-level synthesis node tree2023-08-30T18:19:40ZAlbert Hofkamp#632 multi-level: Construct multi-level synthesis node treeFirst 2 commits are very small improvements.
Third commit adds application files so the multi-level application can be run from the UI.
Fourth commit add building and printing the multi-level synthesis tree.
The computation happens i...First 2 commits are very small improvements.
Third commit adds application files so the multi-level application can be run from the UI.
Fourth commit add building and printing the multi-level synthesis tree.
The computation happens in `ComputeMultiLevelTree.process()`. After clustering it kicks off the recursive tree build function with `makeTreeNode()` at line 100. That function is basically algorithm 1, and it returns a `TreeNode`. The `computeGroupContents()` function implements algorithm 2. Not that both functions exist twice, once for a collection of plant nodes and once for a single plant node (the `M == 1` case in both algorithms).
Algorithm 2 the general case does a search in the plant group relations, which is encoded at lines 200 to 234. The `GroupContent` class contains the actual data that is being updated inside the search (done in the `update` function). The `GroupContent` also functions as return value for algorithm 2.
I ran it with the simple waterlock case, and the output is the same as in the paper, except that our clustering function returns a different order of the clusters.
Closes #632
Addresses #318v1.0Albert HofkampAlbert Hofkamphttps://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/623#629 Introduce CSV parser2023-07-20T06:53:42ZAlbert Hofkamp#629 Introduce CSV parser- Add CSV parser + tests in `common,java`
- Move CSV print function also to `common,java`
- Use new parser in the `common.dsm` project, cleanup the exceptions a bit.
- Rescue the clustering input format by stripping whitespace after pars...- Add CSV parser + tests in `common,java`
- Move CSV print function also to `common,java`
- Use new parser in the `common.dsm` project, cleanup the exceptions a bit.
- Rescue the clustering input format by stripping whitespace after parsing (TABs are dropped, as RFC 4180 doesn't allow them).
Fixes #629v1.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/622#620 CIF to Supremica transformation now only generates at most one guard per...2023-07-06T19:51:14ZDennis Hendriks#620 CIF to Supremica transformation now only generates at most one guard per edgeCloses #620Closes #620v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/621#624 Update and improve SECURITY file.2023-07-06T19:51:18ZDennis Hendriks#624 Update and improve SECURITY file.Closes #624Closes #624v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/620#622 Prepare Git repo for v1.0 development2023-07-03T17:42:08ZDennis Hendriks#622 Prepare Git repo for v1.0 development* I just followed our standard instructions, with separate commits per step.
* Two things of note:
* Updating the `import feature` `version` is no longer needed. It is now automatic. I adapted the instructions for this.
* The `import...* I just followed our standard instructions, with separate commits per step.
* Two things of note:
* Updating the `import feature` `version` is no longer needed. It is now automatic. I adapted the instructions for this.
* The `import feature` `version` no longer have the `.qualifier` part. Instead they now get a `match=compatible`. Tycho changed this automatically for me. I think that is fine, and this way we get the change only once and not again on future updates.
Closes #622v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/619#596 plcgen: Generate transition functions2023-10-30T09:27:35ZAlbert Hofkamp#596 plcgen: Generate transition functionsPatch sequence to add code generation of event transition functions.
Should be readable by individual commits.
Closes #596Patch sequence to add code generation of event transition functions.
Should be readable by individual commits.
Closes #596v1.0Albert HofkampAlbert Hofkamphttps://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/617#556 develop to master for v0.102023-06-30T07:42:09ZDennis Hendriks#556 develop to master for v0.10Addresses #556Addresses #556v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/616#556 Updated release notes for v0.10.2023-06-30T07:24:40ZDennis Hendriks#556 Updated release notes for v0.10.Addresses #556Addresses #556v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/615#555 develop to master for v0.10-RC12023-06-26T04:22:03ZDennis Hendriks#555 develop to master for v0.10-RC1Addresses #555Addresses #555v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/614#526 Add controlled system state space size as statistics option2023-06-22T19:37:11ZDennis Hendriks#526 Add controlled system state space size as statistics option* Add it as a statistic. ~Enabled by default.~
* Normal output now, no longer debug output. Still separated from debug output as before though.
* No more extra indentation to match debug output. (similar to other statistics)
* Updated be...* Add it as a statistic. ~Enabled by default.~
* Normal output now, no longer debug output. Still separated from debug output as before though.
* No more extra indentation to match debug output. (similar to other statistics)
* Updated benchmark script, updated/added tests, updated/added documentation.
Best reviewed per commit.
Closes #526v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/613#555 Update release notes for v0.10-RC1.2023-06-26T04:03:07ZDennis Hendriks#555 Update release notes for v0.10-RC1.Addresses #555Addresses #555v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/612#613 Remove deprecated curly bracket syntax for declaring enumeration.2023-06-18T19:47:26ZFerdie Reijnen#613 Remove deprecated curly bracket syntax for declaring enumeration.Addresses #613Addresses #613v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/611#613 Remove deprecated elim-enums options.2023-06-18T19:36:52ZFerdie Reijnen#613 Remove deprecated elim-enums options.Addresses #613Addresses #613v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/610#609 Add fixed-point computations order option to CIF data-based synthesis tool2023-06-20T06:09:03ZDennis Hendriks#609 Add fixed-point computations order option to CIF data-based synthesis tool* The computations must now be able to be performed in any order. This leads to subtle changes in the code to detect a fixed-point. Since each of the three fixed-point computations has very similar code, I decided to merge them. Since th...* The computations must now be able to be performed in any order. This leads to subtle changes in the code to detect a fixed-point. Since each of the three fixed-point computations has very similar code, I decided to merge them. Since this essentially leads to a rewrite of the entire fixed-point computations loops, I went with an incremental change approach. I moved the code from the three separate pieces of code to a common piece of code, part by part, in different commits. This merge request is therefore best reviewed per commit. However, a few changes are reverted or changed again in subsequent commits, as it was not possible to rebase them into older commits due to conflicts. Still, I hope the stack of commits is rather readable.
* I also improved the detection of the overall fixed-point over the different fixed-point computations, making it simpler.
* And I improved the data-based synthesis documentation a bit, here and there, mostly for linking to the performance documentation and to account for some earlier recent changes we made to the synthesis tool.
Closes #609v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/609#610 CIF data-based synthesis BDD operation cache size/ratio improvements and...2023-06-21T21:00:58ZDennis Hendriks#610 CIF data-based synthesis BDD operation cache size/ratio improvements and fixes* Upgrade from JavaBDD 5.0.0 to 6.0.0, to fix the inverted BDD operation cache ratio bug, also improving the precision of the option.
* Improved and extended the CIF data-based synthesis performance documentation.
* Improved the documen...* Upgrade from JavaBDD 5.0.0 to 6.0.0, to fix the inverted BDD operation cache ratio bug, also improving the precision of the option.
* Improved and extended the CIF data-based synthesis performance documentation.
* Improved the documentation of the BDD operation cache size/ratio options.
Closes #610v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/608#612 Create deprecation warning for switch with single case2023-06-24T17:25:40ZMartijn Goorden#612 Create deprecation warning for switch with single caseCloses #612.
First time playing with CIF's typechecker.Closes #612.
First time playing with CIF's typechecker.v0.10Martijn GoordenMartijn Goorden