Releasing MPS 3.2

We’re now proudly releasing JetBrains MPS 3.2 – a new version of your favourite DSL language workbench. We’ve built this version to give you a tool that fundamentally improves the way how you evolve your languages – language versioning, migration scripts, simplified VCS conflict resolution, fast in-process tests and a more robust generator – you’ll instantly benefit from these enhancements.
Numerous bug fixes and usability improvements in the editor as well as in the core languages will then make your time spent with MPS more effective and enjoyable.

Here’s a list of the major additions in MPS 3.2:

  • Language versioning enables MPS to keep track of the versions of the languages used in your projects and seamlessly upgrade your code if a newer language version is available
  • New model persistence relies on unique concept identifiers, which gives languages greater flexibility when handling concept names, for example when renaming or deprecating concepts
  • Cross-model generation brings a proper solution to resolving references pointing to declarations in different models during generation
  • Several generation planning improvements make the generation process better organised, more predictable and faster
  • Implementation stripping allows language designers as well as library authors to hide the actual implementation of their packages from their users
  • Resolving changes in the Version-control system for non-conflicting models has been automated
  • With Merge hints language designers may specify custom resolution strategies for properties and links to use when resolving VCS conflicts automatically
  • Test performance has been improved dramatically by enabling in-process runs as well as reusing the test caches

The What’s new page details all new enhancements that MPS 3.2 comes with.

Get your copy of MPS 3.2 today and take the brand new MPS release out for a ride.

Develop with pleasure!
-JetBrains MPS Team

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

New and updated documentation materials

Now with the 3.2 release of MPS approaching, we’ve updated the introductory materials that aim at introducing newbies to MPS. Typical readers of this blog have probably got over the beginner stage, but many of you may still benefit from some of the materials or use the pointers listed here to help your friends and colleagues to start with MPS smoothly.

Here are the most prominent updates:

  • The Fast Track to MPS tutorial has been updated in many sections so it could be considered the best place to start learning MPS
  • You may have seen the new What JetBrains MPS can do for you? video. If not, check it out!
  • A new series of 11 introductory videos covering all aspects of language definition in MPS has been created
  • A video describing the key principles of the MPS projectional editor has been published
  • The screen-cast Creating your first language in MPS has been updated
  • The mbeddr guys created an updated Why mbeddr uses MPS screencast
  • The User Guide as the ultimate reference documentation has been restructured and updated
  • Two new sample projects come bundled with MPS 3.2:
    • The Migrations sample project to illustrate the workings of language versioning and migration scripts in MPS 3.2
    • The Language Patterns sample project covering basic language design patterns to help beginners properly structure their early languages

We hope you will like what we’ve done.

Develop with pleasure!
-JetBrains MPS Team

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

MPS 3.2 release candidate 3 is out

Not too long after rc2 we’ve just pushed out an rc3 release of MPS 3.2 and made it available for you to download.

Expect no changes in the functionality, only a few important bug-fixes and performance optimizations, covered by the release notes, have been added.

Develop with pleasure!
-JetBrains MPS Team

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

Getting closer – MPS 3.2 RC2 released

We’re almost ready for the final release now. A second release candidate has been prepared, tested and put up on the shelf for you to download.

The functionality of rc2 is identical to rc1 and is fully covered by the What’s new document. Release notes list all the bug-fixes that we have addressed since rc1.

Please take the release candidate 2 for a spin and let us know how you liked it and whether it correctly migrated and opened your projects. If all is green, we’re ready to ship very soon.

Develop with pleasure!
-JetBrains MPS Team

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

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