Beside, now we run compiler with '
-release' option, with version specified in project preferences (Preferences -> Java Compiler). This option is a bit more strict than combination of
-target options MPS relied on in previous releases, as it controls uses of library APIs that were available in certain releases. You may need to bump up Java version in your project in case you encounter compilation issues due to use of APIs not available in certain release.
Updated transform statement in GenPlan declaration
To evolve GenPlan extensibility story, there's a new mechanism to include languages/generators that are unknown to the plan designer. Now, with `
transform` statement, language designer may include a language that targets or extends a given one. Language B 'targets' Language A means B language's generator produces constructs of Language A.
Control visibility of modules distributed with your plugin
For a long time, MPS assumed all modules coming from language plugins were visible to end user. With number of languages growing, as well as complexity of plugins, there are cases when Language Designer want to hide certain modules not to confuse/overwhelm end user with huge number of unrelated languages or solutions. Plugins tell MPS about modules they contribute by means of `
com.intellij.mps.LanguageLibrary` extension point. Now, extensions to the point may provide optional `
hide="true"` attribute, that makes modules of the plugin eligible to filtering by pattern specified with `
com.intellij.mps.VisibleModuleMask` (MPS-26427). Most MPS plugins now bear the flag, facilitating filtering of MPS own languages in case Language Designer needs to hide them. MPS provides masks for its own modules as part of `jetbrains.mps.ide.devkit` plugin, authors of a custom IDE generally don't include this plugin into a distribution, and have full control over visible modules in their product.