Releasing MPS 3.3.1

Shortly after celebrating the final release of MPS 3.3 we’ve started fixing issues that you have helped us discover. The first bug-fix release, MPS 3.3.1, wraps these fixes, so you can benefit from them immediately. For details on the fixed problems, please see the release notes.

The Drive to Develop
-JetBrains MPS Team

Posted in Announcement | Tagged , | Leave a comment

New forum for JetBrains MPS

This week the MPS project has been migrated to a new forum platform.

Those of you, who have been using the MPS forum in the past, have noticed that the old system has no longer been providing the comfort and ease of used that we all deserve and need. Massive spam attacks a while back had forced us to implement restrictive counter-measures that made our life unnecessarily difficult. This time is now over.

The new platform should give us back the joy that comes from sharing ideas, helping others and discussing conceptual issues.

Please bookmark the new links:

For logging in, you’ll need your JetBrains account credentials.

The Drive to Develop
-JetBrains MPS Team

Posted in Announcement | Tagged , | Leave a comment

JetBrains releasing MPS 3.3

The nine-month reign of MPS 3.2 has come to an end today – we’re proudly releasing MPS 3.3 with numerous new useful capabilities added and many old bugs fixed. As soon as you upgrade to MPS 3.3, you’ll start enjoying:

  • the ability to create custom aspects of language definition
  • fully generic customizable support for commenting out code in any language
  • various TextGen and Generator enhancements, such as handling attributes, controlling the layout of generated text files, anchors in weaving rules and updated cross-model generation
  • reflective editor that gives you direct access to the underlying model
  • numerous usability enhancements, such as Paste from history, Collapse by default or easy visual diff view for arbitrary two nodes
  • many type-system tweaks, such as Overriding the default type node and Overriding inference rules with annotations

The What’s new in MPS 3.3 page lists and details all the major additions in an way that’s explanatory as well as pleasurable for the eye, so please check it out.

May you enjoy using MPS 3.3 at least as much as we enjoyed building it for you!

The Drive to Develop
-JetBrains MPS Team

Posted in Announcement | Tagged , , , | Leave a comment

JetBrains MPS 3.3 release candidate 3

We decided to release one more release candidate that fixes some of the issues that our passionate users have discovered in rc2 (see the release notes). Please grab MPS 3.3 rc3 and take it for a quick ride. The final release is now just round the corner.

The Drive to Develop
-JetBrains MPS Team

Posted in Announcement | Tagged , , , | Leave a comment

JetBrains MPS 3.3 release candidate 2

We are almost there – after fixing several critical issues in the first candidate a second release candidate of MPS 3.3 is now available for download.
Additionally, you may now taste the new rebranded visual appearance:


If things continue going smoothly, we will not wait long before preparing the final release for you.

The Drive to Develop
-JetBrains MPS Team

Posted in Announcement | Tagged , , , | Leave a comment

JetBrains MPS 3.3 release candidate 1

Here’s the hot news – the 3.3 version of MPS is about to ship in a very short while. Today we’re releasing what we have at hands as MPS 3.3 rc 1. It is feature complete, stable and polished. Just right for anyone serious about using MPS to grab it, do thorough tests on their projects and report issues, if they show up.

If you haven’t followed our progress during the EAP phase, you may like to check out the What’s new in MPS 3.3 page at this point to see what to look forward to.

Have a great fun testing our candidate!

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , , | 1 Comment

Releasing MPS 3.3 EAP 4

The feature set for MPS 3.3 is now complete. We’ve prepared an MPS 3.3 EAP 4 release wrapping all the new features so as you could test them out before we do the final polish. Especially you could pay attention to the newest additions:

  • Collapse by default – collection editor cells can now appear collapsed (folded) by default and thus reduce the unnecessary visual clutter that a user has to fight when using a your language.
  • Paste from history – the MPS clipboard now maintains a history of copied nodes and when pasting with Control/Cmd + Shift + V the user can choose, which item from the history should be pasted.
  • Generating images of MPS nodes – it is now possible to have images of MPS nodes created as a part of model build process.
  • Show reflective editor – a reflective editor is a tree-like editor that shows the structure of your bare-bone model in its entirety, so if your editor is not functional, your model is broken or you editor not up-to-date, the reflective editor gives you a fall-back way to view and edit the model.
  • Compare two nodes – arbitrary two nodes in your models can be compared side-by-side in an editable diff dialog window.

There are a few more enhancements waiting for you in MPS 3.3 EAP 4. The What’s new in MPS 3.3 page is gradually being updated to document all the changes that you can be looking forward to appear in MPS 3.3 in a few weeks. Please report any issues that you discover so as we could fix them.

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement, Feature | Tagged , , | 3 Comments

Releasing MPS 3.3 EAP 3

Wrapping up the work we’ve done over summer we’re releasing MPS 3.3 EAP 3. There are two major new features that we would like to encourage you to try out:

  • Lightweight DSL support –  enables internal DSLs to be embedded inside BaseLanguage classes. Internal DSLs in general are easier and faster to develop than full-blown external DSLs, they typically reuse the syntax of the host language and tightly integrate with the surrounding non-DSL code. Similarly, lightweight DSLs in MPS can be created by defining a set of properties, methods and various types of constraints wrapped in a single node and then applying these onto a BaseLanguage ClassConcept or its subconcepts. Check out the documentation for more details.
  • Enhanced ways to customize commented out nodes – in EAP2 MPS added a generic support for commenting out nodes. The feature is fully described at the Commenting out nodes documentation page. In EAP3 the editor definition language contains a Next applicable editor cell, which can greatly simplify customizing the appearance of nodes that are commented out.

Descriptions of all the other new features are gradually being added to the What’s new in MPS 3.3 page. Check it out for full details.

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement, Feature | Tagged , , | Leave a comment

Generic support for commenting out nodes in MPS

MPS now provides a universal way to comment out nodes in models. In previous versions  this functionality had to be implemented in all languages separately, either through node attributes or dedicated “comment” nodes. In 3.3 the information about a node being commented out is stored in the model in a generic way. The smodel language ignores commented out nodes by default so that your queries do not have to filter out commented out nodes explicitly.

Additionally, actions have been created to comment/uncomment out a node.

How to use it

You can select any node in MPS, except roots, and press ctrl/cmd + “/”. That node will be commented out.

Let’s watch some examples.

You can comment out an IfStatement’s condition

a method parameter

a variable type

an editor cell

In fact, every single node can be commented out.

To uncomment the node you simply press ctrl/cmd + “/” on commented node.

How does it work in the model

When one comments out the node, it is placed as a child (wrapped) in a special “child attribute”, called BaseCommentAttribute. Then the instance of this attribute is attached to the commented node’s link in the former parent of the commented node.

The child attribute is the same as the link attribute, but the child attribute is attached to the aggregation link.

So the commented nodes are not stored as the usual children, and they won’t appear in queries like node.children, node.descendants, etc.

But the MPS editor knows about comments and it will draw both children and the commented nodes, in this role.


By default every commented node is drawn surrounded by /* */ . You can define a custom commented editor for the concept.

Just define the usual editor with the hint “comment”.

Note that the children of the commented node should be drawn with their usual editor so you need to remove the comment hint in child cells

Also you can override the comment action in the editor.

For example, we don’t want the %expression% in the ExpressionStatement to be commented out ever.  We want the whole statement to be commented out instead.

So we define the action map for the ExpressionStatement and attach it to the child %expression% cell.

Since can execute block returns false, the COMMENT action will not be executed on %expression% cell. MPS will try to execute the COMMENT action on parent cell, and then the whole statement will be commented out.

Update: A dedicated documentation page is now available in the User Guide. A short video has been published.

Posted in Feature | Leave a comment

MPS 3.3 EAP 2 made available

One month after the first MPS 3.3 EAP release we’re coming with an update. The fresh version MPS 3.3 EAP 2 gives you the chance to taste some more features of the upcoming MPS version:

  • TextGen now allows node attributes to override text generation rules for the attributed nodes. Generator can transparently pass node attributes through the generation process so as they can take effect in a later phase.
  • The way TextGen creates files for root nodes has changed to provide greater flexibility for extending concepts.
  • The mechanism for loading aspects has been unified for all language definition aspects.
  • Generic support for commenting out nodes has been implemented – MPS now provides a universal way to comment out nodes in models. Language designers do not have to implement their own mechanisms, but instead can customize the one provided by MPS.
  • Annotations can be used to override type-system inference rules for expressions/literals.

Descriptions of all the new features are gradually being added to the What’s new in MPS 3.3 page. Check it out for full details.

We hope you’ll experiment with the new possibilities and keep us informed about how you liked them.

Develop with pleasure!
-JetBrains MPS Team


Posted in Announcement | Tagged , , | Leave a comment