Changes to languages, in particular, removing concepts or adding and removing properties, children and references to concepts, will introduce incompatibilities between the previous and the next language version.
This impacts the users of the language if they update to the next language version - since they may discover that their models no longer match the language definitions and thus get appropriate errors reported from their models.
MPS tracks versions of languages used in projects and provides automatic migrations to upgrade the usages of a language to the most recent versions.
Whenever MPS detects that some models use an older version of a language, it will prompt the user to run the Migration assistant in order to update the models. The user can also invoke the Migration assistant manually from the menu . Once invoked, the Migration assistant will collect all the automatic migration scripts that language authors prepared for migrating user models and then safely run them. As soon as the Migration assistant finishes, the user models should be up-to-date.
The migration process consists of several steps. A special preparatory step called Re-save all models from project is always run first to ensure that all models are in a consistent state and to update ResolveInfo across the project. Changes provided by this action will be accumulated in one Local History and VCS change together with the migrations, which simplifies future code management.