What’s New in MPS 3.1

Support for diagram editor

You can now define your language so that it will be possible to edit some of its concepts with the diagram.

  • Diagrams can be used within the context of projectional editor
  • Basic diagram editing support: add, remove, copy, paste diagram elements
  • Code completion aid for new elements creation
  • Linking diagram elements with drag and drop
  • Type checking error highlighting
  • Customizable shapes and support for custom shape libraries
  • Automatic orthogonal edge routing
  • Diagram palette for quick elements creation (experimental)

See more detailed info
at Diagramming editor overview

Generator performance and usability improvements

In-place transformations

With in-place transformations, generator avoids copying large models between generation phases and instead applies changes directly to the original model. This makes generation faster and more memory-efficient.

Note: in-place transformations is not compatible with any code that makes an assumption that an output model exists on every generation step. You can opt-out of in-place transformations in generator preferences.

New generation trace

Generation trace was updated to only contain information about the steps where actual modifications were made for each node. This results in the huge memory saving during generation, and also produces much more usable results for the "Generation trace/Generation traceback" viewer.

Parameters in template switch

template switch now supports parameters similar to the template declarations. Use the new $SWITCH$ macro to pass parameters to the template switch, same way you do with $CALL$ macro. The old $SWITCH$ macro was deprecated, and can be migrated to the new one by the intention or the migration script.

Generator options in build language

You can now specify generator options from within the MPS build script.

Editor improvements

Better user experience in BaseLanguage

Text-like expressions editing

MPS automatically applies side transforms for parentheses in BaseLanguage, making expressions editing very much "text-like" experience, despite projectional nature of the MPS editor.

Better formatting within comments

Thanks to improved style inheritance mechanics, MPS now properly colors and stylise keywords, and other BaseLanguage elements placed within the comments.

Automatic reference re-resolving

MPS editor now tries to automatically re-resolve broken and out-of-scope references in the background. This eliminates the need to update each broken reference manually one by one (with Ctrl-Space) after the valid reference target becomes available in the scope.

Styles improvements

Testing framework improvements

Navigation to code

Clicking on a failed test in the error report window will now navigate directly to the failed check attribute in this test, so you can easily identify the cause of the test failure.

Constraints checking in tests editor

Tests editor now validates scope visibility rules, as well as other structural constraints.


Follow product development and give us your feedback

Versions History

MPS 3.0
  • Using MPS DSLs from Java within IntelliJ IDEA
  • Multiple editors
  • Improved BaseLanguage editing experience
  • Console plugin
  • Darcula mode
MPS 2.5
  • IntelliJ IDEA integration
  • New Build Language
  • Customizable scopes
  • New XML language
  • Dependencies analyzer
MPS 2.0
  • IDE for custom languages
  • Language-specific make
  • Language Debugging
  • Incremental generation
  • Import from Java

Want to receive MPS news and updates?