In this series I go through the commit logs of MPS itself and popular MPS libraries and collect notable changes from their master branches.
MPS
There have been quite a lot of changes in January, so I am splitting them by subsystem.
AI
- Include the mcp-server plugin from IDEA in MPS.
Base Language
- Refactoring: moving code around to reduce the number of cyclic dependencies in the subsystem.
Classifier.isDescendant()optimized to avoid loading stubs unnecessarily and walk the class hierarchy more efficiently.
Editor
- Cleanup: a deprecated 2-argument cell factory method in the editor language generator was removed, only the no-argument version remains. This affects authors of custom editor cells.
Migrations
- Cleanup: removed unused code, old project migrations (2020 and earlier).
- Refactoring of internals to improve the internal API and reduce the need for model read lock.
- Changes around how language versions and module dependencies are computed - less guessing, version -1 will be used if not stored.
Model Persistence
- New version of binary model persistence (.mpb files). The format now stores versions of languages used by the model. This is related to the changes in the migration subsystem.
Project
- Continued preparations for closer integration with the IDEA platform (workspace model)
Structure
- Cleanup:
EnumDataTypeDeclaration_Oldand related concepts deprecated several years ago were removed. - Internal: show ‘concept scope’ in developer mode (concept scope is an experimental, internal feature to designate some concepts as non-referenceable or only referenceable from within the same root node).
Testing
- Cleanup: drop previously deprecated concepts for node tests (
NodeTypeSystemWarningCheckOperationandCheckNodeForErrors)
VCS
- UI improvements around conflict resolution
MPS-extensions
- diagrams: to support custom SVG export, the SVGGenerator class is now an object with options (TextAsShape, UseCSS, SetViewBox).
- rich text: Generic placeholders like generic comments can’t be inserted into words anymore (an exception was thrown).
- tables: Prevent inserting a new row node before/after a singular cardinality child node
mbeddr
An exception was fixed in the mpsutil filepicker.
IETS3 Opensource
KernelF
- Physical units:
- The units Joule, Coulomb and Watt can now have also prefixes with negative metric scaling, e.g., mW (milliwatt). Additionally, some typos have been corrected in the physical units documentation.
- The precision of number types with prefixed units (e.g. mW or km) was always set to infinite by the typesystem. Now, the precision is as precise as possible.
- ShortLambda Interpreter: Fixed a bug which resulted in a
RuntimeErrorTypewhen interpreting ShortLambdas.
Variability
- Viewer for skeleton trees has been improved (better error reporting, more stable, does not break on nodes which are string literals).
specificlanguages/mps-gradle-plugin
I have finally released version 2.0.0 of the plugin, after replacing the buggy artifact transforms with a custom caching solution. A few days later, I released version 2.0.1 which improves compatibility with Gradle configuration cache.
My goal now is to improve the plugin so that it can be used for the build of mbeddr. The main missing features are 1) dependencies on other subprojects and 2) sharing external libraries among several MPS projects in the same repository.