MPS 3.2 on a final approach – the release candidate 1 is out

After almost two months of collecting your feedback on the EAP3 release, fixing bugs, polishing new features and implementing the migration capabilities we’re now ready to offer you the first release candidate of MPS 3.2.

Please get it from the download site and give it a good test. Especially, we encourage you to test migrating your MPS 3.1 projects to MPS 3.2. There might still be some hidden problems in there and we need to know about them. Please tell us, if your project fails to be migrated smoothly to the new version. Also, please stay on the safe side and backup your project before migrating it to 3.2.

The What’s new document summaries the advantages of 3.2 over 3.1. Full release notes list all the issues we have addressed since EAP3.

Develop with pleasure!
-JetBrains MPS Team

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

MPS making friends with JDK 8

One of the useful new features of MPS 3.2 will be its compatibility with JDK 8. Not only you will be able to run MPS on JDK 8, but MPS will also correctly handle new Java 8 syntax enhancements and let you make use of them. Read on to find out some tips.


A new configuration tab in the preferences window, called Java Compiler, has appeared. It currently only holds a single setting – “Project bytecode version”.

 Screen Shot 2015-01-30 at 17.20.40

This setting defines the bytecode version of all Java classes compiled by MPS. These classes include classes generated from language’s aspects, classes of the runtime solutions, classes of the sandbox solutions, etc.

By default, the bytecode version is set to “JDK Default”. This means that the version of the compiled classes will be equal to the version of Java, which MPS is running under. E.g. if you run MPS under JDK 1.8 and “JDK Default” is selected, the bytecode version will be 1.8.

The other options for project bytecode version are 1.6, 1.7 and 1.8.

Note that if you compile languages to the 1.8 version, then if you try to run MPS with JDK, the version of which is earlier than 1.8, those languages won’t be loaded.

Build scripts

Also, don’t forget to set java compliance level in the build scripts of your project. It should be the same as the project bytecode version.

Screen Shot 2015-01-29 at 18.08.28

Using java classes compiled with JDK 1.8

In the MPS modules pool you can find the JDK solution, which holds the classes of the running Java. So when you start MPS under JDK 1.8, the latest Java Platform classes will be available in the JDK solution.

You can also use any external Java classes, compiled under JDK 1.8 by adding them as Java stubs.

Since version 1.8, Java interfaces can contain default and static methods. At present, MPS does not support creating them in your BaseLanguage code, but you can call static and default methods defined in external Java classes, e.g classes of the Java Platform.

Static interface method call

Screen Shot 2015-01-22 at 02.52.51

In the example, we sort a list with the Comparator.reverseOrder(). Comparator is an interface from java.util, and reverseOrder() is its static method, which was introduced in Java 1.8.

Default interface methods

Java 8 introduced also default methods. These are methods implemented directly in the interface. You can read about default methods here:

These methods can be called just like the usual instance methods. Sometimes, however, you need to call the default method directly from an interface that your class is implementing. E.g in case of multiple inheritance when a class implements several interfaces, each containing a default method with the same signature.

In that case foo() can be called explicitly on one of the interfaces via a SuperInterfaceMethodCall construction, which is newly located in the jetbrains.mps.baseLanguage.jdk8 language.

Screen Shot 2015-01-29 at 20.39.29

Using Java platform API

Java 8 introduced lambda expressions, of which you can learn more here:

MPS 3.2 doesn’t yet have a language that would be generated into lambda-expressions. Instead, it has its own closure language, which is compatible with the new Java API!

Here’s the example of an interaction with the new JDK 8 Collections API:

Screen Shot 2015-01-29 at 18.03.43

The forEach() method is the new default method of java.lang.Iterable. It takes a Consumer interface as a parameter. Consumer is a functional interface as it only has one method. In Java 8 it would be possible to pass a lambda expression to forEach(). In MPS you can pass the MPS closure. A closure knows the type of the parameter taken by forEach() while generating and it will be generated exactly to the correct instance of the Consumer.


Develop with pleasure!
-JetBrains MPS Team

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

JetBrains MPS 3.2 EAP 3 published

Thank you for all the feedback we’ve received on the previous EAP release. This helped us focus our attention on the roughest corners and fix many bugs that could annoy the users of the upcoming 3.2 version of MPS. All these fixes have been carefully packaged into a third EAP release and made available for download.

Most of our effort in EAP 3 was put into improving the project migration experience. This is the aspect that we would like to ask you to test most heavily and report any issues that occur.

Please bear in mind that the migration currently cannot migrate generated sources and compiled artifacts. Please clean the generated artifacts (typically the source_gen/source_gen.caches/classes_gen folders in your languages/solutions/generators) before opening your projects in MPS 3.2 EAP 3.

Get MPS 3.2 EAP 3 and take it for a spin.

We plan to start preparing a release candidate during the following weeks so that you could get a final 3.2 GA release in early 2015.

Since no new features have been added in EAP 3, the What’s new in MPS 3.2 document is still very relevant. To check the full list of the issues solved in EAP3, check out the release notes.

We’ve also started our efforts to update the documentation for MPS 3.2. In particular, you may be interested to check out:

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , | Leave a comment

A second EAP release for MPS 3.2

It is only a few weeks since you got a chance to test the first EAP release of MPS 3.2. and we’re bringing you some more features packaged into an MPS 3.2 second EAP release. Get it fresh and enjoy the first-hand experience of:

  • Cross-model generation – generations of MPS users have dreamt of the ability to seamlessly generate mutually interconnected models. This now becomes possible.
  • Version control support for auto-resolvable conflicts – properties and links in languages can now be marked with the new @mergeHint annotation and thus be resolved automatically in case of merge conflicts using the selected strategy. Often-changing properties, such as diagram layout coordinates, for example, will no longer require manual intervention when merging branches.
  • Automatic changes resolution in non-conflicting models – MPS now helps users resolve merge conflicts by automatically resolving as much as possible
  • Project migration wizard – projects will now be automatically migrated from MPS 3.1 to 3.2 using a graphical assistant
  • IntelliJ IDEA MPS plugin – this EAP release comes with an updated IntelliJ IDEA plugin

The What’s new in MPS 3.2 document has been updated to contain both EAP1 and EAP2 features so you can learn about all the details in one place. To check the full list of the closed tickets in EAP2, head to the release notes.

Enjoy MPS 3.2 EAP2 and please let us know about any issues that you discover.

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , | Leave a comment

JetBrains MPS 3.2 EAP just started

For quite a while you’ve seen us issuing only bug-fix releases to MPS 3.1. Although we’ve managed to sneak in a few handy improvements here and there, in general, there wasn’t much cool new stuff for you to try out.
Today is the best time for a more adventurous step – the features that we’ve been preparing for several months are now ready to face the world and so we’ve packaged them into the first in a series of 3.2 EAP releases. A healthy doze of new features is waiting for your test ride:

  • Language migrations give language designers the tooling to track multiple language versions and help users migrate code between versions of a language.
  • Smooth parentheses support in BaseLanguage expressions has been further enhanced – parentheses can be inserted or removed at any position any time and MPS will instantly re-match the remaining parentheses and rebalance the model.
  • Implementation stripping for language definition gives you the means to protect the sources of your languages by excluding them from the generated language artifacts and thus protect the intellectual property encoded in the definition of your languages
  • Rethinking of the generator plan further speeds up the generation process
  • New generator dependency types allow you to better capture the relationships between generators.
  • The speed of running unit tests has been improved considerably by employing in-process test execution as well as clever cache re-use.
  • JDK 8 runtime support allows MPS to run on the most recent JDK.

Please read a dedicated What’s new in MPS 3.2 document to learn all the details about the new features. If you’re not in hurry, you may also like to check the full list of the closed tickets in the release notes.

Important note: When opening an existing project of yours in MPS 3.2 for the first time, you may need to run all the migrations listed in the Tools -> Migration 3.2 in order to upgrade the project correctly.

This first EAP release unfortunately comes without the IDEA plugin. Making the plugin work smoothly in IDEA showed to be more challenging than originally anticipated and we need some additional time to make it reliable. We decided not to hold you back from experimenting with the new MPS features and finish the proper wiring of the plugin before the next EAP release.

We are certain that you will enjoy grabbing MPS 3.2 EAP and giving it a spin. Please tell us about your experience and thoughts. Help us shape the upcoming MPS release. We’re tuned in.

Develop with pleasure!
-JetBrains MPS Team

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

JetBrains MPS 3.1.5 is out

Another bug fix release in the 3.1 series is ready for download. The MPS 3.1.5 release fixes a few problems (see release notes) and adds support for the most recent version of IntelliJ IDEA 13.1.5 to the MPS plugin.

Develop with pleasure!
-JetBrains MPS Team

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

Upcoming MPS presentations

We’ll be spreading the word on MPS at two conferences this October – Jazoon, Zurich, and GeeCON, Prague. Please, mark your calendars if you’ll be around and don’t forget to tell your friends:

We’ll be happy to see you there!

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , | 2 Comments

MPS 3.1.4 bugfix release

A mistake on our side has unfortunately caused troubles running MPS 3.1.3 to some of our passionate users. To be more concrete, the MacOS installer was not properly signed and thus kept being rejected when run under restricted security settings. We apologize for the inconvenience and offer you a fixed MPS 3.1.4 release, which is ready for download instantly.

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , | Leave a comment

MPS 3.1.3 has been released

MPS 3.1.3 has just been released with more than forty fixes and minor improvements, which will certainly make you enjoy MPS even better. Check them all out and then grab your fresh copy of MPS 3.1.3 on the download page.

Develop with pleasure!
-JetBrains MPS Team

Posted in Announcement | Tagged , , | Leave a comment

JetBrains MPS 3.1.2 released

We’re just releasing MPS 3.1.2 with another doze of fixes and improvements.
The most noteworthy ones include:

  • Support for the newest IntelliJ IDEA 13.1.4 as a base platform for the MPS plugin (to eliminate a nasty error).
  • Reduced impact of large number of installed plugins on the MPS startup time and run-time performance.
  • Other usability issues related to MPS as well as the IDEA plugin – please see the full release notes.

We’ll keep fixing the problems that you discover and report through our tracker.

Develop with pleasure!
-JetBrains MPS Team

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