escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2023-06-22T19:54:29Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/567#523 Optimize enforcement of state plant invariants like state requirement in...2023-06-22T19:54:29ZDennis Hendriks#523 Optimize enforcement of state plant invariants like state requirement invariantsIt seems for the test models we have, the change actually makes things worse. Then again, we had something similar for state requirement invariants, if I remember correctly. The test models are simply too small and too few to reach any r...It seems for the test models we have, the change actually makes things worse. Then again, we had something similar for state requirement invariants, if I remember correctly. The test models are simply too small and too few to reach any real conclusion. And for real-world models, for state requirement invariants, it did actually improve performance, a lot. So, here we just do the same for state plant invariants. We currently don't have enough test or real-world models to conclude what is best either way.
Closes #523v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/566#553 Event-based synthesis: warn if no requirement automata.2023-04-28T17:59:57ZDennis Hendriks#553 Event-based synthesis: warn if no requirement automata.- Also fixed a JavaDoc.
- Also added some section comments.
- Also removed an inconsistent empty source code line.
Closes #553- Also fixed a JavaDoc.
- Also added some section comments.
- Also removed an inconsistent empty source code line.
Closes #553v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/563#571 ToolDef readlines/writefile improvements2023-04-28T12:24:26ZDennis Hendriks#571 ToolDef readlines/writefile improvements* `readlines`/`writefile`: use try-with-resources.
* `readlines`: use UTF-8 encoding, to match `writefile`. Also, we always use UTF-8, rather than the default (platform) encoding, and especially ToolDef should be platform-independent.
* ...* `readlines`/`writefile`: use try-with-resources.
* `readlines`: use UTF-8 encoding, to match `writefile`. Also, we always use UTF-8, rather than the default (platform) encoding, and especially ToolDef should be platform-independent.
* `writefile`: different way of handling new lines.
* Added new optional `newline` argument.
* Default of `newline` is `platform`, for backward compatibility.
* Allows `preserve` for writing `text` to write raw `text`.
* Allows custom specific new lines to be used as well.
* No `preserve` when writing `lines` as then may be get mixed new lines.
* Extended ToolDef documentation for the `readlines`/`writefile` tools.
Closes #571v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/562#418 PLCgen: add default initial values to the converted state variable decla...2023-04-30T07:46:58ZAlbert Hofkamp#418 PLCgen: add default initial values to the converted state variable declarations.Short patch, can be read by individual commit, which looks like the better approach for reviewing.
Addresses #418Short patch, can be read by individual commit, which looks like the better approach for reviewing.
Addresses #418v0.10Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/560#399 #468 #221 Upgrade to Eclipse 2023-03 with in-place upgrade2023-05-30T18:55:39ZDennis Hendriks#399 #468 #221 Upgrade to Eclipse 2023-03 with in-place upgradeGeneral info on merge request:
* This upgrades from Eclipse 2022-06 to 2023-03. See the individual commits for details. Best reviewed per commit.
* You can set up a new development environment from scratch, but you can also in-place upgr...General info on merge request:
* This upgrades from Eclipse 2022-06 to 2023-03. See the individual commits for details. Best reviewed per commit.
* You can set up a new development environment from scratch, but you can also in-place upgrade your existing development environment now. See the `dependency-upgrades.asciidoc` file for the instructions. **It would be nice if you could all try that out**, so that we can mature the instructions listed there.
In this particular instance, you need to remove the 'Tycho Project Configurators' manually, if you have them still in your development environment. See the step-by-step instructions for details.
Some issues I had while trying out the in-place update. I was trying things out and did not use the step-by-step instructions as they are now, so hopefully you will not encounter them, but it **would be good if you could try**, to see how 'stable' and in-place update is in practice:
* When pressing 'Ctrl+Shift+T' for 'Open Type' I at some point had two commands associated to it. I restored all default keybindings to resolve this.
* Using the 'Open Type' dialog and choosing a class from the JDK led to errors like: `Type 'java.lang.String' could not be found in '.org.eclipse.jdt.core.external.folders/.link23/jre/lib/jrt-fs.jar'. Make sure all workspace resources are refreshed.`. A workspace refresh and full clean/rebuild did not resolve this. I solved it by removing all projects from my workspace and re-importing them.
* Commiting the provisioning operation (for P2 or target platform) by Oomph would fail with `java.lang.ClassCastException: class org.bouncycastle.openpgp.PGPPublicKey cannot be cast to class org.bouncycastle.openpgp.PGPPublicKey (org.bouncycastle.openpgp.PGPPublicKey is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @685f5d0d; org.bouncycastle.openpgp.PGPPublicKey is in unnamed module of loader org.eclipse.osgi.internal.loader.EquinoxClassLoader @4e2f2438)`.
I resolved this by updating the Oomph version in my development environment: 'Help' -> 'Check for updates...', which only listed Oomph updates, and then 'Next' -> 'Next', accepting all licenses, 'Finish', 'Select all' -> 'Trust selected' -> 'Restart Now'.
Important further details on the changes, some of which affect our way of working into the future:
* I got rid of the Apache XML serializer specific version pinning that was needed for the previous Eclipse version. However, I also got rid of that dependency altogether later on (see next point).
* I had quite some issues with getting Apache Xalan, Apache Xerces and Apache XML resolver to work properly. They were complaining about missing `Import-Package` dependencies.
The packages were JDK packages, so should always be present. I spent hours on this, but didn't manage.
Then I realized that (probably about a decade ago) I introduced them as the XML functionality of the JDK itself at that time wasn't working.
But we use much newer JDKs now, so these dependencies are no longer needed. I thus reduced the dependencies and no longer needed code/comments related to them.
This also fixes issues with saving SVG files from the SVG viewer/visualizer to paths with characters that get encoded as special characters in URLs, such as spaces.
This issue is unresolved for Apache Xalan, but my tests show that the JDK implementation handles this properly.
* I added the Eclipse PDE runtime (with 'Plug-in Registry' view) to the product, to enable debugging of dependency problems.
* The version of `org.apache.commons.lang3` got updated, deprecating its `StringEscapeUtils`. The class essentially got moved to `org.apache.commons.text`, but that is not available on Orbit, nor in the Eclipse 2023-03 update site.
Eclipse Platform and its projects are now using dependencies directly from Maven Central, if they are available there, and have proper OSGi metadata in their manifest (see [here](https://www.eclipse.org/lists/cross-project-issues-dev/msg19288.html), [here](https://www.eclipse.org/eclipse/news/4.25/pde.php#default-3rd-party-bundles) and [here](https://github.com/eclipse-platform/eclipse.platform.common/blob/master/bundles/org.eclipse.platform.doc.isv/porting/4.25/incompatibilities.html)).
In fact, they plan to no longer update or add such dependencies to Orbit at all, in the future (see [here](https://www.eclipse.org/lists/cross-project-issues-dev/msg19616.html)).
Hence, it makes sense that if we need additional dependencies, that we go the same route.
Eclipse PDE and Eclipse Tycho both support target platforms with Maven targets.
However, Oomph does not.
We therefore can no longer generate our target platform using Oomph, and have to switch to a manually crafted target platform.
This has the additional benefit that there will be less unneeded 'crap' in the target platform.
I implemented this change, removing target platform generation from the Oomph setup, and I manually cleaned up the target platform.
It is still possible to let Oomph reactive the target platform, after having edited it. This works in the same way as previous we generated a new target platform using Oomph. The Oomph task has a slightly different name, but is named in such a way that it is clear which one to use.
You can also just open the target platform file and pressing the 'Reload Target Platform' button at the top-right of the 'Definition' tab.
* Since our previous Eclipse upgrade, I get a lot of info-level items in the 'Problems' view when opening XML-based files that don't link to their schema. I configured Wild Web Developer's XML tools to ignore such 'issues'.
* We have M2E settings in our development environment configuration (set by Oomph) to ignore missing M2E lifecycle mappings. However, I still got some, and thus explicitly ignored them in `pom.xml` files.
* The Eclipse JDT compiler tool is no longer provided as a plug-in fragment, but is now provided as a regular plugin. Hence, we don't need special configuration for it anymore for our Maven build. See also [here](https://www.eclipse.org/eclipse/news/4.27/jdt.php#ecj-separated-from-core).
* When upgrading to Eclipse 2022-06, we had to ensure all projects have a project-specific encoding, or projects would get a warning. How, this can be configured to be ignored (see [here](https://www.eclipse.org/eclipse/news/4.25/platform.php#specify-project-encoding-severity) and [here](https://github.com/eclipse-platform/eclipse.platform.resources/issues/166)). We already configure the global encoding in the Eclipse ESCET product, so there is no need for project-specific encodings. Especially for projects of the user, this was annoying. Also, the changes we previously made to ensure the CIF examples and benchmarks had no such warnings (see !331, comment 828762), are no longer needed, and I thus reverted them.
* The development environment now contains Maven 3.8.7, but the Eclipse Foundation Jenkins servers only have 3.8.6, so they don't match, but hopefully that is not a big deal.
Other issues resolved by upgrading to a newer Eclipse version:
* The SVG viewer/visualizer 'Save as' dialog now properly starts in the right initial proposed directory. This fixes #221.
* We can now use records in our Java code without getting warnings about JavaDocs.
Remaining issues:
* We now require PGP signing, for the dependencies we take directly from Maven Central. This requires a PGP key that we have to request from the Eclipse IT team, so I'll do this in a separate isuse.
Closes #399 #468 #221v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/558#567 Added launch configuration to run stand-alone cifsim for tank model from...2023-04-22T20:14:44ZPatrick van Berkel#567 Added launch configuration to run stand-alone cifsim for tank model from devenvThis merge request adds launch configuration `test-cif-simulator-tank` to simplify testing and debugging the CIF simulator application in stand-alone mode.
This contribution has been tested by running the configuration on Ubuntu and Win...This merge request adds launch configuration `test-cif-simulator-tank` to simplify testing and debugging the CIF simulator application in stand-alone mode.
This contribution has been tested by running the configuration on Ubuntu and Windows. Running this configuration will correctly start the application in the desired mode but will also trigger the error discussed in issue #567.
Addresses #567v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/553#559 Add PLCgen expression generator.2023-04-25T05:41:24ZAlbert Hofkamp#559 Add PLCgen expression generator.Theoretically this should convert CIF expressions to PLC equivalents. Given a CIF expression it outputs a PLC expression with additional PLC statements if necessary.
@jverbakel I added an interface for getting PLC equivalents of CIF dat...Theoretically this should convert CIF expressions to PLC equivalents. Given a CIF expression it outputs a PLC expression with additional PLC statements if necessary.
@jverbakel I added an interface for getting PLC equivalents of CIF data at `org.eclipse.escet.cif.plcgen.conversion.expressions.CifDataProvider`, you may want to have a look at it.
I haven't run this code yet it needs tests, but I thought it to be a good idea to show what I have so far.
I'll write and add tests (with fixes most likely).
Commits are meant to be read in sequence although at the end I fixed a few things.
The generator started as a mostly commented-out copy of the cif2plc generator, and then parts are replaced. Hopefully if you read it side-by-side you can use that old information.
Fixes #559
Addresses #397 #418
[[Removed the "draft" state]]v0.10Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/552#564 CIF benchmark script: use normal output instead of debug output.2023-04-03T13:29:00ZDennis Hendriks#564 CIF benchmark script: use normal output instead of debug output.* Makes synthesis faster, without affecting the platform-independent BDD metrics.
* Also makes benchmarking require less less disk space, as there is less output to store.
Closes #564* Makes synthesis faster, without affecting the platform-independent BDD metrics.
* Also makes benchmarking require less less disk space, as there is less output to store.
Closes #564v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/550#563 Improve CIF data-synthesis main fixed point loop sections2023-04-04T18:43:49ZDennis Hendriks#563 Improve CIF data-synthesis main fixed point loop sections- Changes: clearer comments to indicate which section belongs to which operation.
- Dedicated 'end of fixed point loop' detections for 2nd and 3rd operations. No more split or shared functionality.
- All changes of this branch are backwa...- Changes: clearer comments to indicate which section belongs to which operation.
- Dedicated 'end of fixed point loop' detections for 2nd and 3rd operations. No more split or shared functionality.
- All changes of this branch are backward compatible. None of these changes change synthesis behavior (hence to test output has changed either). Only the code is changed to make it easier to follow.
- I made separate commits to reduce the Git diff per commit as much as possible. The one where indentation is changed looks complicated, but only two code blocks changed indentation.
- I know a lot else can be improved in the data-based synthesis tool, but the only goal here is to make the sections dedicated per operation, and to then make it clear to which operation each section belongs.
Closes #563v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/549#279 pom.xml surefire updates: 3.0.0-M5 to 3.0.0.2023-04-03T13:40:18ZDennis Hendriks#279 pom.xml surefire updates: 3.0.0-M5 to 3.0.0.Closes #279Closes #279v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/548#560 Development/release process updates: no more CQs and IP Logs.2023-04-03T13:27:27ZDennis Hendriks#560 Development/release process updates: no more CQs and IP Logs.Closes #560Closes #560v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/547#557 Prepare Git repo for v0.10 development2023-04-03T13:27:39ZDennis Hendriks#557 Prepare Git repo for v0.10 developmentCloses #557Closes #557v0.10https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/657#658 Fix 'cifexplorer' script: use correct plugin to find application.2023-09-25T13:32:25ZDennis Hendriks#658 Fix 'cifexplorer' script: use correct plugin to find application.Closes #658Closes #658v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/649#649 EventDisabler now uses try-with-resources to read event names file.2023-09-16T19:12:17ZDennis Hendriks#649 EventDisabler now uses try-with-resources to read event names file.- Fixes a resource leak, where the file stream was never closed.
Closes #649- Fixes a resource leak, where the file stream was never closed.
Closes #649v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/647#646 FESTO benchmark model: removed duplicate invariants.2023-09-11T06:05:48ZDennis Hendriks#646 FESTO benchmark model: removed duplicate invariants.* Changed as discussed in #646.
* Output has not changed in any meaningful way: [output.diff](/uploads/ddfb49607beea93b561b166812ee728e/output.diff) / [generated.diff](/uploads/13bd5979b8ffe9c855d84e0e7f0dfd63/generated.diff)
Closes #646* Changed as discussed in #646.
* Output has not changed in any meaningful way: [output.diff](/uploads/ddfb49607beea93b561b166812ee728e/output.diff) / [generated.diff](/uploads/13bd5979b8ffe9c855d84e0e7f0dfd63/generated.diff)
Closes #646v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/645#645 DEPENDENCIES.txt update for changed Dash license check tool output.2023-09-08T07:30:33ZDennis Hendriks#645 DEPENDENCIES.txt update for changed Dash license check tool output.Closes #645Closes #645v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/642#642 SeText no longer allows a shortcut to use itself2023-09-01T15:04:29ZDennis Hendriks#642 SeText no longer allows a shortcut to use itself* In SeText specifications, shortcuts may no longer use themselves. This prevents crashes in the SeText Text Editor and SeText Generator.
* SeText type checker: fix JavaDoc parameter order.
* Improve an SeText type checker message. Easie...* In SeText specifications, shortcuts may no longer use themselves. This prevents crashes in the SeText Text Editor and SeText Generator.
* SeText type checker: fix JavaDoc parameter order.
* Improve an SeText type checker message. Easier to read/understand.
* Best to review per commit.
Closes #642v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/637#639 Fix performance regression in finite response checker2023-08-28T12:58:55ZDennis Hendriks#639 Fix performance regression in finite response checker- If only finite response is checked, the unneeded global guarded updates are no longer computed. This fixes the performance regression.
- The controller checker now also requires at least one enabled check. This prevents performing lots...- If only finite response is checked, the unneeded global guarded updates are no longer computed. This fixes the performance regression.
- The controller checker now also requires at least one enabled check. This prevents performing lots of calculations in preparation, that are then not used by any check.
- Best reviewed per commit.
Closes #639v1.0https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/634#634 Get rid of build-helper-maven-plugin missing version warnings.2023-08-21T11:14:24ZDennis Hendriks#634 Get rid of build-helper-maven-plugin missing version warnings.Addresses #634Addresses #634v1.0https://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.0