MPS2018.2

Overview

With MPS (Meta Programming System), you can design your own extensible DSLs and start using them right away to build end-user applications. Unique technology of projectional editing allows to overcome the limits of language parsers, and build much richer DSL editors, such as ones with tables and diagrams.

What's new in MPS

Version 2018.2:

Generator Tests:

In addition to the existing family of node and editor tests, we’ve implemented a new way to test generators. The aim is to ensure a generator, or set of generators, do their job. Both in-process and out-of-process execution modes are supported from the IDE, as well as execution from MPS Ant build scripts.

Fork in generation plans:

There’s a new statement in generation plans: fork with another generation plan to branch the transformation sequence at a given point. The referenced plan receives a model in the state it was at in the fork step and proceeds as a regular transformation. In the example, first, we transform the input model with crossmodel.entity generator and records the state, and then continues on with the crossmodel.property#prop2class generator to eventually get output model #1. Then the crossmodel.property#prop2xml generator transforms the recorded model to get the output model #2. Note that ‘then’ here is not a contract - there’s no promise that branches get processed in any specific order, except that the ‘primary’ branch, the one from the initial plan, gives the ‘first and only’ output model available through old API (GenerationStatus#getOutputModel) for compatibility/migration purposes.

Fork in generation tests:

Generator tests support generation plans with a fork statement and match all output models against the reference ones which were supplied.

New VCS aspect:

We have introduced a new VCS language aspect. Instead of writing annotations on the concept declaration, now you create a language aspect for this. The aspect is generated to specific runtime code. The VCS aspect has replaced the MergeHints annotation, and migration is included.

GitHub plugin:

The GitHub plugin is now implemented. You can log in from VCS -> Checkout from Version Control -> Git -> Log in to GitHub...

Migration notifications:

We've implemented migration notifications to provide you with better communication on what is happening: now you will receive a notification if a project depends on a language that could not be loaded for whatever reason, or when migration is postponed.