Mps logo

The MPS Blog

Language workbench to create Domain-Specific Languages

Early Access Program Features

Feature Freeze for MPS 2021.1

Today we’re rolling out the last build in the Early Access Program for MPS 2021.1, and these are the last few features that will be included in the release. Try them out.

Zoom in and Zoom out

The font size can be quickly adjusted in the currently open editor window by holding Control/Command and rolling the mouse wheel. Font size is not persistent, so when you reopen the file, the text size will be reset to the default value. You can enable/disable the feature in settings in the Editor -> General section: Change font size with Ctrl/Cmd+Mouse Wheel.

Improved performance on indent layout

The indent layout implementation has been made incremental in some core cases, which will reduce the rendering time for big models in languages that mainly use the indent layout (such as BaseLanguage). This feature can be disabled with the VM option mps.indent_layout.disableincremental.

Root annotation improvements

Version Control System support adds improvements to the Root annotation. A new algorithm for calculating revision changes with movement tracking is now used for root annotation (MPS-33188). The colors for annotated lines/cells are calculated using only those revisions where the root was changed (MPS-33186). The annotated cells now have the special context menu group. You can copy the Revision Number, Show Diff, and perform other actions for each annotated cell (MPS-33157).

Java Compiler for MPS modules with Java facet

A lot has changed in our approach to Java compilation of MPS modules. We started this change to address one of our top-voted issues, Annotation Processing support (MPS-27653). We switched the MPS Java Compiler infrastructure to utilize javax.tools.JavaCompiler set of APIs, so MPS can now use any compiler that implements this standard API. As of MPS 2021.1 we run with the default compiler configured for the API, with an option to use the Eclipse Compiler for Java (ECJ), if present. When ECJ libraries are in the classpath, you may switch MPS to use ECJ with mps.compiler.java=ecj‘ as the system property (e.g. by editing mps.vmpoptions). Note that if you experience unrecoverable issues using the new compiler infrastructure, there’s also an option to switch back to the legacy mechanism of direct ECJ API by changing the configuration for mps.compiler.java=ecjlegacy as the system property.

Furthermore, now we run the compiler with the -release option, with the version specified in project preferences (Preferences -> Java Compiler). This option is stricter than the combination of -source/-target options on which MPS relied in the previous releases, as it controls uses of library APIs that were available in certain releases. You may need to update the Java version in your project if you encounter compilation issues due to using APIs not available in certain releases.

Updated Transform statement in GenPlan declaration

To evolve the Generation Plan extensibility story, there’s a new mechanism to include languages/generators that are unknown to the plan designer. Now, with the transform statement, the language designer may include a language that targets or extends a given one. When we say Language B ‘targets’ Language A, we mean that Language B’s generator produces constructs of Language A.

Other improvements

  • There is now a visual indication that the intention of the Call-Site macro is executed. (MPS-32928)
  • Changes to the new model dialog. (MPS-30787)


DOWNLOAD MPS 2021.1 Feature Freeze

We’ve stopped developing new features and are now focusing on stabilizing the new functionality in MPS 2021.1. Please report any problems you encounter so we can fix them before the release.

Have a great day!

Your JetBrains MPS team

The Drive to Develop

blog_footer_bw@2x

Discover more