Problem with Reporting Errors from MPS

Recently we found out that there is a problem when you try to report an error from MPS. Submitting an issue from your JetBrains account will end up with an error. This happens because login to YouTrack with JetBrains account was modified recently to improve security and access with login & password. The access is now restricted to token authorization.
You can still log in to YouTrack with JetBrains account from browser, but it is no longer possible from MPS.

 

There is a ticket about fixing the problem, and for now, we provide a workaround to help you keep reporting issues.

image (12)

 

Workaround

To be able to submit issues, you need to log in with a permanent token as a password. Follow the next simple steps to get a token.

  1. Go to JetBrains Hub and open the Authentication tab in your profile. You can use your JetBrains account to login to JetBrains Hub account.

    image (13)
  2. Create a New Token.
    image (14)
  3. Copy the token and use it as a password in MPS for your login.
    image (15)
  4. Bingo! It should work now.

image (16)

We hope to fix this problem soon, but meanwhile, the workaround will help you keep reporting the annoying issues in MPS. If you run into any problems, please contact our support.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 

Posted in Announcement | Tagged | Leave a comment

Help us improve the MPS documentation

Little progress can be made without honest feedback. The MPS online documentation was migrated to a new JetBrains platform earlier this year. Along the way, the MPS team has been putting effort into making the documentation more complete and up-to-date.

To move forward with the documentation, we need your help:

  • If you fail to find documentation for a certain feature.
  • If you discover wrong or misleading information.
  • If you think some text or image is obsolete or inaccurate.
  • If you’d like to suggest improvements or want to contribute a piece of text.

If you come across anything like this, scroll down to the bottom of the documentation page and simply click the No in the feedback area:

feedback1

You’ll get a little dialog to describe what you think should be changed.

feedback2

What happens next?

The system will create a YouTrack issue for the documentation team and send us a notification. We will evaluate your request and react. If you leave behind your email address we may contact you for additional details, if needed.

That’s it. Now you have a way to let us know when you see something that could be improved in the documentation.

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

Posted in Feature | Tagged | Leave a comment

The Progress of MPS 2019.3

As we talked about in our previous blog post, MPS 2019.3 is all about product stabilization. Right now we are focusing on fixing issues from previous versions, but that doesn’t mean that we can’t finish some features that we’ve been working on for a while.


DOWNLOAD MPS 2019.3 EAP2

Quick Definition Action

Quick Definition is similar to its counterpart in IntelliJ IDEA. Click on a node, hold and press Ctrl-Shift-I, and you will see a popup with the definition of the node. In this popup, you can navigate, select other nodes, and perform the Find action. This way, you don’t need to open a new tab to simply get a glance at the node.

Quick Definition works in completion menus as well. If you don’t know what the node means, you can press Ctrl-Shift-I and see its definition alongside the completion menu. As you navigate through the completion menu, the contents of the popup will change accordingly.

Screen Shot 2019-10-24 at 14.47.06

 

Not only that, but we’ve also integrated three new plugins from the IntelliJ Platform:

  1. Settings repository: Lets you share your settings between different instances of your IDE.
  2. Task Management: Manage your tasks from an issue tracker.
  3. Change Reminder: Predicts files that you may have forgotten to modify based on your commit history.

Since we started working on this release last month, we’ve resolved 340 issues from different versions. We are happy with these results but we know we’ve got a lot more work to do.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

blog_footer_bw@2x

Posted in Announcement | Leave a comment

News About MPS 2019.3

MPS has three major releases per year. Last month we had 2019.2 and now there is only 2019.3 left for the beginning of December. As this happens to be the shortest release cycle, we decided to dedicate it to product stabilization. The whole team is focusing on investigating all the bugs, then fixing and resolving obsolete issues from our issue tracker.

We are reviewing all bugs assigned to the previous releases, which includes issues with the “Fix version” option defined. These bugs were most probably introduced into the MPS source code at the moment of a specific release, so it may be a regression problem in the MPS code. Also, they could have been reported by our community, and an MPS developer recognized this problem as significant for users and assigned it to the specific version. With this approach, we aim to address all the bugs from previous versions so all the future issues will be properly planned.

We are talking about over 1000 issues. It’s hard to say if we are going to fix all of them, but we will try to address as many as we can, as well as we can.

 

Get involved

Every ticket from our issue tracker has a voting system. Anyone can vote on any ticket to communicate that they’re also anxious to get the problem fixed. 

In our bug-fixing efforts for MPS 2019.3, we are using the number of votes as one of the sorting criteria to prioritize issues to be fixed. This is a good chance to report those annoying issues that you’ve always wanted us to fix and to vote for existing ones. This release will focus on issues, so vote for bugs, not features.

Group

 

No featureless version

This approach does not mean that we won’t have any new features for this release. We will finish the ongoing work of implementing some features, continue the progress of the new Typesystem, and integrate the latest features from the IntelliJ Platform.

The plan for this release is for every member of our team to finish the work they are doing, and instead of developing new features, focus on fixing bugs and stabilize the product. For MPS 2020.1, we will go back to our normal release process and focus on delivering more new features.

The community is very important for us, so this is a way to show you that we are listening. We encourage you to report and vote for all the bugs that are affecting you in your projects.

 

Have a nice day!

Your JetBrains MPS Team

The Drive to Develop

 

blog_footer_bw@2x

Posted in Announcement | Tagged , , | Leave a comment

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