MPS 2019.2の新機能

列挙データ型

列挙データ型

新しい列挙データ型の宣言では、オプションリストを簡潔に宣言できる方法を提供しています。具体的には、各オプションを名前付きの列挙メンバーで表現できるようにしています。 また、必要に応じて一部のメンバーに対してエディタの表示を変更し、メンバーがプロパティで明示的に設定されていない場合に使用されるデフォルトのメンバーを選択することができます。

詳細情報

エラーメッセージのカスタマイズ

お客様のご要望にお応えしたエラーメッセージのカスタマイズ

かねてより、一部MPSエラーメッセージのカスタマイズ機能に対するご要望をいただいておりました。 あるお得意様からのご要望により、この機能を最優先することができました。 これで、エラー報告のすべての制約を変更できるようになりました。 次のリリースでは、他の種類のエラーでもこの報告をカスタマイズできるようにする予定です。

新たに 'feedback' という名のアスペクトをエラー本文のカスタマイズに使用できるようになりました。

詳細情報

ルールベースの制約言語

ルールベースの制約言語

ルールベースの制約言語は、通常のMPS制約言語から現在使用可能なcanBe*制約を将来的に置き換える目的で作成されました。 弊社はルールベースの制約言語を実験的な機能と考えており、次のリリースで劇的な進化を遂げていることを期待しています。

詳細情報

ルート履歴

ルート履歴

Gitメニューに、特定のルートに対するVCSの変更履歴を表示する新しいアクションが追加されました。 このアクションは、エディタのコンテキストメニューからご利用いただけます。

詳細情報

全文検索

全文検索

プロパティ値を全文検索できるようになりました。 Edit–>Find–>Find Text in Projectアクション(Ctrl+Alt+Shift+F)を使用すると、指定テキストに一致するプロパティ値を持つノードを探すことができます。

特定エラーのチェック

特定エラーのチェック

テスト言語の最も一般的な使用事例の一つには、エラーメッセージや警告についてノードをチェックすることが挙げられます。 MPSのテストサブシステムは、同じノードに出現する異なるエラーを識別できないことがありました。 これは、誤解を招く動作が発生する可能性がありました。具体的には、ユーザーが予想されるエラーを対応するテストの注釈内で指定しても、このようなノードについて報告される追加のエラーや警告がテスト違反として報告されていませんでした。

詳細情報

パターンに定義されたチェックルール

パターンに定義されたチェックルール

コンセプトのチェックルールを定義する際、コンセプトのインスタンスとなっている各ノードに対してルールが呼び出されます。

今後は、スーパーコンセプトから継承されたルールをオーバーライドする代わりに、オーバーライドするルールのリストを明示的に指定できるようになりました。 オーバーライド機能を使用しているすべてのチェックルールを確認し、オーバーライドすべきルールを決めることを強くお勧めします。

詳細情報

Facade APIの型チェック

このリリースの時点で利用できる型チェッククエリの実行方法としては、新しいFacade APIのみがサポートされています。

新しいAPI: jetbrains.mps.typechecking.TypecheckingFacade と関連クラスをご覧ください。

非推奨のAPI(レガシー): パッケージ jetbrains.mps.typesystem.* の階層は非推奨となりました。 「型システム」アスペクトの内容から自動生成されたコードを除き、この階層内のクラスを直接使用することは推奨されません。

今後のリリースで予定されている変更内容

以下は、型システムのサポートに関連して実施される変更の暫定的な計画です。 型システムの実装を担ってきたアスペクトとそのアスペクトで使用されていた言語は、非推奨となります。 この言語とランタイムのサポートは、いずれ別のプラグインに移行されます。

型システムアスペクトの「型システム以外」の部分を実質的に置き換える新しいアスペクトが導入されます。 従来の型システムアスペクトからチェックルールを抽出するための移行スクリプトが提供される予定です。

新しい型チェックフレームワークとランタイムがサポートされるようになり、古いエンジンが完全に書き換えられます。

Makeのバックグラウンド実行

Makeのプロセスがバックグラウンドで正しく動作するようになりました。 バックグラウンドでmakeを実行中のUIの応答性を改善しています。 以前のバージョンに戻すには、新しいUI設定「Preferences–>Project Settings–>Perform in background」を使ってください。

ランタイムとしてのJava 11

MPSは今後、JDK 11環境で動作します。 これは、スタブモデルの読み込み動作に影響します。 JDK11に再パッケージされた一部のクラスやフィールドのごく少ない使用箇所を除き、プロジェクトの大部分は移行する必要はありません。

IntelliJ IDEAプラグインでは、MPSファセットを含むモジュールをJDK バージョン11と関連付けなければなりません。 これを行わなかった場合は、コードを生成できません。

BaseLanguage

このリリースの主な目標の一つに、BaseLanguage関連の改善がありました。 バグから使い勝手の問題まで、BaseLanguageに関する多くの問題を解決しました。

新しいサンプル

コミュニティからのフィードバックを元に、XML生成用の新しいサンプルプロジェクトを追加しました。

BLコメントのスペルチェック

単一行コメント、Javadocテキスト、文字列リテラルのスペルチェックに対応しました。

ローカルGitの設定

マージドライバ設定をglobalからlocalに(Gitリポジトリ単位で)変更しました。これにより、MPSのインストールと同じ数のマージドライバを使用できるようになりました。