In this series I go through the commit logs and change logs of MPS and popular MPS libraries and collect notable changes from their master branches.
MPS
The list below only mentions user-visible changes and does not include refactorings such as dead-code removal or moving functionality around.
BaseLanguage
- 🆕
IForEachLoopinterface to capture commonalities between various foreach loops. - ↗️ Intention ‘Add Field For Unused Param’ got a slightly nicer name
- ↗️ BaseLanguage no longer depends on the behavior language
- ↗️ Resolution of unknown elements during Java parsing will not add a used language when it already comes from a used devkit.
- 🐞 Fixed a few NPEs when accessing scope or class hierarchy for a detached node
Behavior language
- ↗️ Generated code changes to improve diagnostics: parameter names are now tracked, no code is generated for empty constructors, and invoking some internal implementation methods directly to shorten stack traces.
- ↗️ Removed the dependency of the behavior language on the kernel subsystem.
Core
- ↗️ Diagnostics improvements (better printout from ClassLoaderManager, extra trace from EDTExecutor).
- ↗️ Continued internal refactoring towards per-project repositories.
Editor
- ↗️ The
:cell was made non-selectable in Boolean style items. - ↗️ Avoid auto-fixing references in nodes that are no longer open in the editor.
Find Usages
- ↗️ A nicer tab name for module dependency usages.
Make
- ↗️ The RCP build script wizard was updated to reflect the fact that the MPS Make plugin now depends on the Java plugin.
Migrations
- ↗️ Minor improvements in the migration notification (“Some languages in the project are not deployed…”)
MPS-extensions
-
🆕
blutillanguage was extended with several additional operations, such as ’elvis’ operator?:, integer ranges ([2..5]),selectwith index, and more. For more details, see the changelog. -
🆕
EditorTestLifecycleMethodsattribute and related intentions were added to thenl.f1re.testinglanguage. With these intentions you can add before/after tests methods to editor tests. -
🐞
de.itemis.mps.linenumbersImprove line numbers position in diff editors where the line numbers appear to the right of the editor. -
🐞
de.itemis.mps.linenumbersFix a NullPointerException that would occur after application shutdown and would be logged e.g. by command line tools. The NPE was caused by failing to properly dispose a Swing timer. -
🐞
de.itemis.mps.editor.celllayout.runtimeGrid layout was broken after previous performance optimization
mbeddr platform
Bugfixes to several languages:
- 🐞 com.mbeddr.mpsutil.filepicker: Solution-relative pickers now work correctly during generation.
- 🐞 com.mbeddr.mpsutil.hyperlink: random exceptions should no longer occur after module reload.
- 🐞 com.mbeddr.mpsutil.interpreter: Throw a more detailed exception when TypedChildConstraint cannot determine the type of a node.
- 🐞 com.mbeddr.mpsutil.interpreter: Generated node URLs now correctly point to the input model instead of the transient model.
KernelF
- no changes in March
mbeddr/mps-gradle-plugin
- 🐞 A minor fix to the
MpsMigrate: pass an additional--add-openargument to MPS so that versions 2025.1 and above do not complain at run time.
mps-build-backends
- 🐞 A few fixes to get fewer stack traces logged during backend execution.
- 🆕 The
executebackend can now exit with a custom error code: if the executed method returns an integer value, this value is used as the backend exit code.
Other projects
-
Eugen Schindler from DSLFoundry wrote in to mention that he recently migrated two DSLFoundry projects to MPS 2025.1: mps-UMLRT and mps-metabnf.
-
MetaBNF seems to be a catchy name because this is also the name of a new project open-sourced by Porsche. Both projects appear to be focused on generating MPS DSLs from a Backus-Naur Form (BNF) description.