Last version of the Early Access Program for MPS 2018.3 is ready

This is our last version of the Early Access Program for 2018.3, which means feature development is put on hold and we’re focusing only on proper integration of the new features and fixing bugs.

This version introduces new actions to find deprecated code, improved conflict resolution, customization of tips and tricks, and custom packages for BaseLanguage classes.

Download MPS 2018.3 EAP

 

Improved conflict resolution

Previously, it was impossible to apply changes from both local and remote sides, as applying from one side simply rejected the changes from the other.

For children in multiple roles, it is not convenient if both changes are applied. This why now, after you apply changes from one side of the conflict, the other conflicting changes are converted into an addition at the end of the changed group. You can apply or ignore them separately.

For example:

Conflict_1

After applying the left version of the conflict, you still can apply or ignore the line from the right side:

Conflict_2

 

New actions to find deprecated code

Find Usages of Deprecated can find all usages of deprecated elements. Now, the report of the found usages groups the entries by the expected version of code removal, so it’s easier to recognize their severity and prioritize their elimination. In addition, we’ve reviewed our own deprecations in MPS code and added some additional migrations to help you minimize the amount of deprecated code in projects using MPS.

Deprecated_1

 

Custom packages for BaseLanguage Classes

For a long time, the only way to manage Java packages of generated classes was through the name of a containing model:

BLClasses_1

In the previous screenshot, we’ve got 3 BaseLanguage roots in a jetbrains.mps.samples.files.blpack model. The generated code used to end up in a package with the same name.

However, with the new Classifier property ‘packageName’, you can manage the Java package of a generated class. The property is available for root classifiers:

ClassConcept:

BLClasses_2

Interface:

BLCLasses_3

EnumClass:

BLCLasses_4

The generated code for the model now uses the property:

BLClasses_5

with files arranged appropriately:

BLClasses_6

 

Tips & Tricks

The default Tips & Tricks for MPS can now be customized. This can be done with the new tips & tricks concept in the build script:

Tips_1

Tips can be reused from the general MPS distribution, or imported from a directory or solution:

Tips_2

  • The first option, “from MPS,” just adds all MPS tips to the final distribution. This is the default option for the build script generated with the wizard.
  • The second option, “from directory,” requires you to manually create a folder with the correct structure of the tips and an IdeTipsAndTricks.xml file. The correct structure can be obtained from mps-tips.jar.
  • The last option, “from solution,” lets you use the jetbrains.mps.build.tips and jetbrains.mps.core.xml languages to quickly create basic tips in MPS itself.

Finally, tips must be packaged into a build script layout in the /lib folder. In the build script generated with the wizard, MPS tips & tricks are packaged in the /lib folder by default:

Tips_3

 

Tips & Tricks language

To import tips & tricks from a solution, create a solution with a model and add the languages jetbrains.mps.build.tips and jetbrains.mps.core.xml to model the used languages. Then you can create an instance of the MPSTipsAndTricks concept, where multiple tips can be created.

Each tip is HTML-formatted text and may include up to one image:

TipsLanguage_1

A solution with the MPSTipsAndTricks concept will generate a special xml (in the /source_gen folder) which knows how to package tips & tricks in the distribution:

TipsLanguage_2

 

Find the complete list of all the bugs fixed here and keep reporting issues on our tracker.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

MPS 2018.1

This entry was posted in Announcement and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *