All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
modelcheck
: fix a bug that caused most command line options to be ignored.
-
The backends are now tested against MPS 2024.1.1 and MPS 2024.3 and not tested anymore for versions before 2022.3.
-
modelcheck
: instead of addingUnresolvedReferencesChecker
to the list of checkers, themps-modelchecker
plugin (which contains this checker) is always loaded instead.
modelcheck
: Work around an indexing problem in MPS 2023.2 and above (build number 232.xxx or higher) by triggering full indexing in IDEA environment after the project is opened. Can be disabled by--force-indexing=never
. See MPS-37926.
modelcheck
: Error messages written into JUnit XML are duplicated into the XML text of the node. XML standard requires removing newlines from attributes, so it may be impossible to distinguish report items when error messages are written only into the "message" attribute.
modelcheck
: useIdeaPlatformTaskScheduler
for parallel model checking when available, so that IDEA read action is started during model checks. This makes it possible to use 'find usages' without having an error about 'Read access is allowed from inside read-action (or EDT) only' logged.
modelcheck
: updates jackson-dataformat-xml to 2.13.+ which is the latest non-vulnerable version compatible with MPS 2022.2
- all backends (via
project-loader
): will now load project libraries from.mps/libraries.xml
under the project directory when using MPS - all backends (via
project-loader
): new--plugin-root
argument to automatically detect plugins in subdirectories of plugin roots.
modelcheck
: fix deadlock on MPS 2021.3.5 or higher when running parallel model check a second time.
modelcheck
: jackson-dataformat-xml reverted to 2.11.+ because 2.16.+ turned out to be incompatible with MPS 2022.2.x.
modelcheck
: The jackson-dataformat-xml dependency was updated to 2.16.+
execute
: new CLI tool to execute methods from generated Java code.
modelcheck
: added--parallel
option to run modelcheck in parallel.
modelcheck
: Errors from models outside the check scope now get added to the JUnit report. This is consistent with the current behaviour, because those errors already get printed to the console and cause modelcheck to fail.
generate
: added--no-strict-mode
option. Strict mode places additional limitations on generators, but is required for parallel generation.
project-loader
library now has a separate version number and a separate changelog
because it had to receive some backwards incompatible changes.
- MPS 2022.x is now supported:
- commons-logging is used to support both log4j (MPS 2021.3 and below) and java.util.logging (MPS 2022.2 and above) frameworks.
generate
: The new API in 2022.x to determine applicable facets is supported.- Note that MPS 2022.2 seems to have a race condition which makes it wait 100 seconds on startup. A workaround is to
start the backend in test mode (
--test-mode
). This is reported to JetBrains as MPS-35992.
project-loader
: newProjectLoader
and related classes using builder pattern to simplify maintaining backward compatibility in the future.
project-loader
: global methodsexecuteWithEnvironment
andexecuteWithEnvironmentAndProject
are now deprecated, use the newProjectLoader
class instead.
generate
: when there is nothing to generate the exit code is254
now, to distinguish it from the general generation error (exit code255
). This is still treated as an error like in the previous versions, which matches MPS behaviour.
generate
: exit code for a general MPS error is now255
on all systems. Previously-1
was returned, which could be interpreted as255
or-1
depending on the system.
project-loader
: new overload ofexecuteWithEnvironmentAndProject
that allows passing anEnvironmentConfig
, new method to create anEnvironmentConfig
from a list of plugins and macros. These two methods can be used together to customize the configuration of the environment beyond the possibilities offered by the existing methods (e.g. one can add libraries to the environment).
generate
: option--parallel-generation-threads
to specify the number of threads to use for parallel generation. The default is 0, which means no parallel generation.
generate
: options to include and exclude lists of models and solutions, similar tomodelcheck
.
generate
: applicable make facets are now retrieved correctly on MPS 2021.3.
project-loader
: move argparser and jackson dependencies from 'implementation' to 'api' ('runtime' to 'compile' in Maven).
--log-level
flag to set the default log level of backend-specific loggers (categories starting withde.itemis.mps
). The default log level iswarn
but can be set tooff
for backward compatibility.
- modelcheck: added
--result-format=module-and-model
to report on both module and model failures. The default optionmodel
is kept for backward compatibility, but a warning is emitted with a hint for migration.
- generate: IDEA IconLoader is now activated when run in IDEA environment. This is useful when generating cell screenshots using mbeddr documentation language from the command line. If the loader is not activated, any icons are replaced by a single black pixel.
- modelcheck now reports unresolved references.
--environment
option with two values,IDEA
(default, for backward compatibility) andMPS
.
- modelcheck: can now exclude models or modules from checking.
- If
--warning-as-error
was enabled, success would be erroneously reported there were no warnings, only errors.
- Extracted
execute-generators
andmodelcheck
backends along withproject-loader
library from [mbeddr/mps-gradle-plugin
] (https://github. com/mbeddr/mps-gradle-plugin) usinggit-filter-repo
to keep Git commit history. - Added integration tests (
integration-tests
).