The first bugfix of MPS 2019.2 is ready!

MPS 2019.2.1 is here and comes with some important fixes. We found some problems with the merge driver and migration scripts. 


DOWNLOAD MPS 2019.2.1

 

Merge Driver 

We advise installing this bug fix and update the merge driver. You can update the merge driver by clicking on the VCS add ons notification.

image (10)

Then choose the “Get merge driver and settings” from the dialog. This does 2 things: it updates/creates project settings to point for actual merge driver and updates merge driver itself.

mergedriver

 

Migration Scripts

This version comes with some fixes for the migration scripts. If you encounter problems in the migrated code from MPS 2019.2, you can revert the problematic changes and invoke ‘Execute Re-Runnable Migrations’.

 

Not only that, we fixed a long list of bugs. Keep reporting any problems you come across to our issue tracker

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 

blog_footer_bw@2x

Posted in Announcement | Tagged , , | Leave a comment

MPS 2019.2: Enumerations data type, Error messaging customization, Root history, Migration to JDK 11, and much more.

The final release is here. This version brings us a lot of new functionality to different subsystems and a long list of fixed bugs. 

 


DOWNLOAD MPS 2019.2

 

Enumeration data types

New Enumeration data type declarations provide a concise way to declare a list of options: each option is expressed with a named enumeration member. Optionally, you can alter the editor’s presentation for some members and choose the default member that is used when no member is explicitly set in a property.

enum1

The SModel language has also refined the experience of working with enum properties. Now property reads and writes work with typed enum-member instances instead of raw primitive values, which helps language designers write code with fewer errors.

Enum2

Additionally, we reworked all operations that work with enums.

Enum3

Enum Switch statement was added to SModel language, providing the possibility for switching on enum members. It can also be used as an expression to evaluate different values depending on what enum member is met.

Enum4

 

Customization of error messages

For some time, there were requests for the possibility to customize some MPS error messages. Thanks to a request from one of our paying clients, we were able to give a highest priority state to this feature. All constraint checker error messages can be customised now.

We are planning to make this reporting customization available for other kinds of errors in the next releases.

New language aspect named ‘feedback’ was added in this version. This aspect can be used for customising the text of error messages reported by structure validation, property and scoping constraints.

errormessage1

The feedback ‘ShowMessage’ defines the text displayed in the tooltip when you move the mouse cursor over the problem node.

errormessage2

Note that you can define your own custom feedback by extending the given set of feedback languages, for instance, you might describe a feedback which highlights the edges or vertices in the diagram editor.

In order to provide custom error messages for canBe* constraints, use the rule-based constraints language.

errormessage3 

Rule-based constraints language

Rule-based constraints language was created in order to replace currently available canBe* constraint from the regular MPS constraints language in the future. We consider Rule-based constraints language as experimental functionality, so we expect it to evolve significantly in next releases.

ruleConstraintLang

For now we keep precedence of old-style constraints, so old canBe* constraints should be completely removed in order to let rule-based constraints step in. New constraints definition language is more declarative, it forces the language designer to specify a set of isolated constraints (rules)  instead of the single conditional block.

In 2019.2 it allows to provide a custom error message for each rule individually.

constraint2

 

Root History

The Git menu comes with a new action to show the history of VCS changes to a specific root. The action is available from the editor’s context menu:

roothistory1

Note, collecting the root history, as with almost every other VCS history action, is time-consuming. There’s a progress indicator in status bar that helps you bear with this.

The dialog is similar to the Selection History dialog in IntelliJ IDEA:

roothistory2

A list of revisions in the dialog shows revisions of a model file when the respective root has been changed.

 

Full-text search

Full-text search in the property values is ready. Edit–>Find–>Find Text in Project action (Ctrl+Alt+Shift+F) lets you look up nodes with property values that match the specified text.

FindText

Specific error checking

One of the common use cases of a test language is to check nodes for error messages or warnings. The testing subsystem of MPS was sometimes not able to distinguish between different errors appearing on the same node. This could lead to misleading behavior: even if the user specifies the expected error inside the corresponding test annotation, any additional errors and warnings reported upon this node would not be reported as test violations.

Keep in mind that migrating to the new version might cause some tests to fail because now they are only suppressing the warnings and errors that the user specified in the error checking annotation.

test_annotation

Checking rules defined for patterns

When you define a checking rule for a concept, the rule is then called for every node that is an instance of the concept.

Now, instead of overriding any rule inherited from the superconcept, you can explicitly specify the list of rules you want to override. We strongly recommend that you review all your checking rules that use the overrides feature, and determine which rules should be overridden.

Previously, there was an option to define the checking rule for a concept using a pattern language. This option could be used for narrowing the rule applicability condition (compared with rules defined purely for a concept), and for convenient naming of properties, children, grandchildren, and so on. Both goals can be achieved by using a pattern language inside the rule body, in particular, by using the matches statement on top of its do block:

Screen Shot 2019-08-08 at 18.27.36

Checking rules with patterns in their headers will no longer be supported in the future, so we recommend that you review them and move the pattern into the rule body using the dedicated intention.

 

Java 11 as runtime

MPS will now run under JDK 11. This will affect the mechanism of loading stub models. Most of the project won’t need migration, except rare usages of some classes and fields repackaged in JDK 11. 

In the IntelliJ IDEA plugin, the modules with MPS facet should now be associated with JDK version 11. Otherwise, code generation fails.

 

Typechecking Facade API

As of this release, the new facade API is the only supported way to run typechecking queries. 

New API: See jetbrains.mps.typechecking.TypecheckingFacade and related classes.

Deprecated API (legacy): The hierarchy of the packages jetbrains.mps.typesystem.* is now deprecated. Any direct usage of classes within this hierarchy is discouraged, except for code that is automatically generated from the contents of a “typesystem” aspect. 

 

Changes upcoming in the following releases

The following is a tentative plan of changes to be made in relation to typesystem support. The aspect that has been responsible for the implementation of typesystem and the language used in this aspect, will become legacy. With time the language and the runtime support will be migrated to a separate plugin.

A new aspect to be introduced that will essentially replace the “non-typesystem” part of typesystem aspect. A migration will be provided to extract checking rules from the legacy typesystem aspect.

A new typechecking framework and runtime support to be introduced, which means a total rewrite of the legacy engine.

 

Make in Background

We have been working to improve the UI responsiveness during the background make. If the make process was sent to the background once, it will always be performed in the background on subsequent executions. The action is saved in Preferences->Project Settings-> Perform in background.

 

BaseLanguage

BaseLanguage improvements were one of the main goals for this release. We fixed a lot of issues related to BaseLanguages, from bugs all the way to usability problems.

 

Spell-check in BL comments

We have spellcheck for single-line comments, Javadoc text, and string literals.

 

New Sample

Based on feedback from the community, we have added a new sample project for XML generation.

 

Local git configuration

We’ve changed the merge driver settings from global to local (per git repository), so now it is possible to have as many merge drivers as MPS installations.

 

And that’s it! We hope you enjoy this release and keep reporting everything you find to our issue tracker. 

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

blog_footer_bw@2x

Posted in Announcement | Tagged , , | Leave a comment

A Release Candidate available for MPS 2019.2

The 2019.2 release with new features and improvements is almost ready. Get the Release Candidate of 2019.2 and be among the first language developers on the planet who check it out. 2019.2 will enable you to play with:

  • New enumeration data types
  • Customization of error messages
  • Rule-based constraints language
  • Per-root VCS history
  • Java 11 as a runtime
  • Full-text search
  • and a lot more (please see posts on EAP 1, EAP 3 and EAP 5)


Download MPS 2019.2 RC1

See the complete list of bugs fixed since the last EAP release here. If you discover a problem that slipped through our quality assurance, please be so kind and report them in our tracker!

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 

Posted in Announcement | Tagged | Leave a comment

The Feature Freeze for 2019.2 is available

The last early access for the 2019.2 comes with new features. For this version, you can expect new error messaging customization, VCS history of changes to a specific root, a new way to run typechecking queries, and the important announcement that MPS 2019.2 will run in JDK 11. 

 

DOWNLOAD MPS 2019.2 EAP5

Customization of error messages

For some time, there were requests for the possibility to customize some MPS error messages. Thanks to a request from one of our paying clients, we were able to give the highest priority state to this feature. All constraint checker error messages can be customised now.

We are planning to make this reporting customization available for other kinds of errors in for the next releases.

New language aspect named ‘feedback’ was added in this version. This aspect can be used for customising the text of error messages reported by structure validation, property and scoping constraints.

errormessage1

The feedback ‘ShowMessage’ defines the text displayed in the tooltip when you move the mouse cursor over the problem node.

errormessage2

Note that you can define your own custom feedback by extending the given set of feedback languages, for instance, you might describe feedback which highlights the edges or vertices in the diagram editor.

 errormessage3

Rules constraints language

Rules constraints language was created in order to replace currently available canBe* constraint from the regular MPS constraints language in the future. We consider Rules constraints language as experimental functionality, so we expect it to evolve significantly in next releases.

constraint1 

For now, we keep precedence of old-style constraints, so old canBe* constraints should be completely removed in order to let rule-base constraints step in. New constraints definition language is more declarative, it forces the language designer to specify a set of isolated constraints instead of the single conditional block and it allows to customise error messages for each constraint separately.

constraint2

 

 

Root History

The Git menu comes with a new action to show the history of VCS changes to a specific root. The action is available from the editor’s context menu:

roothistory1

Note, collecting root history, as with almost any other VCS history action, is time-consuming. There’s a progress indicator in status bar that helps you bear with this.

The dialog is similar to Selection History dialog of IntelliJ IDEA:

roothistory2

A list of revisions in the dialog shows revisions of a model file when the respective root has been changed.

 

Typechecking Facade API

As of this release, the new facade API is the only supported way to run typechecking queries. 

New API: See jetbrains.mps.typechecking.TypecheckingFacade and related classes.

Deprecated API (legacy): The hierarchy of the packages jetbrains.mps.typesystem.* is now deprecated. Any direct usage of classes within this hierarchy is discouraged, except for code that is automatically generated from the contents of a “typesystem” aspect. 

 

Java 11 as runtime

MPS will now run under JDK 11. This will affect the mechanism of loading stub models. Most of the project won’t need migration, but be aware that it’s possible that some JDK classes and fields will be moved with the new version. 

In Idea plugin, the modules with MPS facet should now have at least JDK 11. Otherwise, it will not generate.

 

Not only that, we have solved a large number of other minor and not so minor issues, see the complete list here. Use our issue tracker to report any problems that you find.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

MPS 2018.1

Posted in Uncategorized | Leave a comment

The third Early Access Program for MPS 2019.2 is waiting for you

The MPS 2019.2 EAP3 comes with new functionality and gives shape to the final release.

 

DOWNLOAD MPS 2019.2 EAP3

 

Enumeration data type

New declarations provide a concise way to declare a list of options: each option is expressed with a named enumeration member. Optionally, you can alter the editor’s presentation for some members and choose the default member that is used when no member is explicitly set in a property.

image2019-7-16 19_3_14

The SModel language has also refined the experience of working with enum properties. Now property reads and writes work with typed enum-member instances instead of raw primitive values, which helps language designers write code with fewer errors.

Enum2

Additionally, we reworked all operations that work with enums.

Enum3

SModel also ships a statement for switching on enum members. It also can be used as an expression to evaluate different values depending on what enum member is met.

Enum4

Local git configuration

We’ve changed merge driver settings from global to local (per git repository), so now it is possible to have as many merge drivers as MPS installations.

 

Specific error checking

One of the common use cases of test language is checking some node for error messages or warnings. The testing subsystem of MPS sometimes could not distinguish different errors appearing on the same node. This could lead to misleading behavior: even if user specifies expected error inside corresponding test annotation, any additional errors and warnings reported upon this node would not be reported as test violations.

Keep in mind that migrating to the new version might cause some tests to fail because now they are only suppressing the warnings and errors that the user specified in the error checking annotation.

test_annotation

Checking rules defined for patterns

When you define a checking rule for a concept, the rule is then called for every node that is an instance of the concept.

Now, instead of overriding any rule inherited from the superconcept, you can explicitly specify the list of rules you want to override. We strongly recommend that you review all your checking rules that use the overrides feature, and determine which rules should be overridden.

Previously, there was an option to define the checking rule for a concept using a pattern language. This option could be used for narrowing the rule applicability condition (compared with rules defined purely for a concept), and for convenient naming of properties, children, grandchildren, and so on. Both goals can be achieved by using a pattern language inside the rule body, in particular, by using the matches statement on top of its do block:

checking_rule_pattern

Checking rules with patterns in their body will no longer be supported in the future, so we recommend that you review them and move the pattern into the rule body using the dedicated intention.

 

Not only that, this EAP build fixes several annoying bugs reported by our community.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop
MPS 2018.1

Posted in Announcement | Tagged , , | Leave a comment

MPS 2019.1.5 is now available to download

This minor release comes with critical fixes for light quotations that are used with final variables, some problems with the MPS extensions, and issues reported by the community. See the complete list of fixed issues and please keep reporting them to our issue tracker.

DOWNLOAD MPS 2019.1.5

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 
MPS 2018.1

Posted in Announcement | Tagged , , | Leave a comment

MPS 2019.1.4 bug fix is ready

This release comes with some critical fixes that we have recently come across. Here are the main issues fixed:

  • The MPS instance run configuration is no longer broken. (MPS-30344)
  • Fixed the problems with updating or removing project libraries. (MPS-30013 and MPS-29673)
  • Clone model with @genplan is now working again. (MPS-30349)

DOWNLOAD MPS 2019.1.4

See the complete list of fixed issues and please keep reporting them to our issue tracker.

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

MPS 2018.1

Posted in Announcement | Tagged , , | Leave a comment

MPS 2019.1.3 is waiting for you.

This minor release comes with a few critical fixes that the community reported. You can see the complete list of bugs fixed here. Keep using our issue tracker to report any problem.

DOWNLOAD MPS 2019.1.3

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

MPS 2018.1

Posted in Announcement | Tagged , | Leave a comment

First Early Access Program of 2019.2

We have been working hard to bring you more exciting features and solve painful bugs. This release comes with a whole load of new improvements. Here are the main ones:

  • Full-text search in property values is ready. Edit–>Find–>Find Text in Project action (Ctrl-Shift-F) lets you look up nodes with property values matching the specified text. (MPS-4577)
  • Make processes in Backgrounds work properly. We have been working to improve UI responsiveness during the background make. If you want it to restore the previous version, there’s a new UI setting to control all this, Preferences–>Project Settings–>Perform in background. (MPS-13440)

  • BaseLanguage improvements were one of the main goals for this release. We fixed more than 10 issues related to BaseLanguages from bugs all the way to usability problems.
  • We have spellcheck for single-line comments, Javadoc text, and string literals. (MPS-8630)
  • Based on feedback from the community, we have added a new sample project for XML generation. (MPS-30110)

 

DOWNLOAD MPS 2019.2 EAP1

 

Apart from all of that, we have solved a bunch of issues, you can see the complete list here. Let us know if you find any other problems on our issue tracker.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop
MPS 2018.1

Posted in Announcement | Tagged , , | Leave a comment

MPS 2019.1.2 is ready for you!

Try the new bugfix update for MPS 2019.1 and forget all about the following issues:

  • No more skipped tests. (MPS-29697)
  • MPS Instance and Deploy Plugins run configurations work as expected. (MPS-30093)
  • Names don’t collide while running tests. (MPS-29593)
  • Custom packaging is fully deprecated. (MPS-30113)

 

DOWNLOAD MPS 2019.1.2

 

See the complete list of issues fixed here. If you run into any problems, tell us about them in the tracker.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 

MPS 2018.1

Posted in Announcement | Tagged , | Leave a comment