Quick Definitionは、IntelliJ IDEAの対応する機能に似ています。 ノードをクリックしてCtrl-Shift-Iを長押しすると、ノードの定義を含むポップアップが表示されます。 このポップアップではナビゲートし、他のノードを選択し、Findアクションを実行できます。 このため、ノードをさっと一目見たいときに毎回新しいタブを開く必要はありません。
すべてのモデルをメモリから明示的に削除することで、メモリ消費量を改善できるようになりました。 メモリインジケーターをクリックするか、Registryアクションによるスケジュールクリーンアップのパラメータ(秒単位で)設定できます。 この機能は現時点では実験的なものですが、今後のリリースでこの機能を改良する予定です。
現在は1つの言語に対して複数のジェネレータを作成し、それを(旧バージョンと同様に)言語内でホストするか、通常の最上位モジュールとして言語の隣に追加できます。 ジェネレータの計画を使用すると、複数のジェネレータを最大限に活用できます。 移行を支援するため、言語ジェネレータのうち1つだけが明示的な生成計画なしで引き続きモデルに関与します。 新しいジェネレータは言語コンテキストメニューから作成可能です。また、次のダイアログには当該ジェネレータを独立させるための新しいチェックボックスが実装されています。
コンセプトをインターフェースコンセプトに変換(またはその逆に変換)する新しいインテンションを追加しました。 これは言語構造を作成する際に使用され、使用箇所を変更しません。
コード内の使用箇所からコンセプト、メソッド、クラスを作成できるようになりました。 インテンションが式で新しいステートメント、メソッドでクラスを作成できるようになり、子ロール/参照ロールや拡張/実装でコンセプトやインターフェースを作成できるようになりました。
新しいジェネレータステートメントを使用すると、任意のINamedConceptから有効なJava識別子を生成できます。 これは、不正なシンボルを削除し、大文字化し、必要に応じてプレフィックスを追加して一意の名前を生成する機能です。
MPSの旧バージョンでは、Finderでのadd resultステートメントはnode<>
ベースの検索結果のみに許されていました。 add raw resultを使用すれば、言語設計者はFind Usages表示が可視化できるあらゆる結果を表示できます。
MPSのジェネレータは動的参照の解決を試みようとして失敗した際に警告を発しますが、すべてのジェネレータがラベルマッピングを使用した厳密な参照構築方法に準拠しているわけではないため、これによって大量の警告が発生してしまいます。 このため、警告の表示を制御するための新しい設定を追加しました。
特に大規模で強力に結びついたjar一式から読み込む場合など、スタブモデルを読み込む際のパフォーマンスを大幅に改善しました。 弊社がターゲットとするプロジェクトでの読み込み時間が2019.2よりも2~3倍高速化しました(18秒から6秒に短縮されました)。 この高速化は、MPS 2019.1とMPS 2019.2にもバックポートされました。
MPSは特定のファイル一式(すなわち、*.mps
と*.mpsr
)をモデルとしてのみ扱ってきましたが、カスタムモデルの永続性ではファイル名が異なります。 モジュールをビルドする際に必要なすべてのモデルファイルがバンドルされるよう、ビルドスクリプトのモジュール用に明示的なモデルルートを宣言できるようにし、ファイル名パターンのカスタマイズを容易にしました。
カスタム永続性のサンプルと新しいビルドソリューションウィザード用のドキュメントが更新されました。 Mathサンプルの生成時間のエラーとドキュメントページのリンク切れが修正されました。 いくつかのダイアログとツールウィンドウも修正されました。
2進リテラルと8進リテラルに対応し、Javsdocの型パラメータが適切に処理されるようになりました。 その他多くの問題も修正されています。
「Tests」モジュールファセットによって言語設計者は完全に自由になり、MPSはLangaugeモジュールにファセットの存在を要求しなくなりました。
Surround with…(囲む…)アクションを複数ノードを選択したときに使用できるようになりました。 これまでは選択範囲に単体ノードが含まれている場合にしか使えませんでした。
ルート履歴のリビジョンの場合、同じリビジョンで変更された他のファイルを表示できるようになりました。
2019.2で導入されたShow Root Historyアクションを単体ファイルに保持されたモデルのルールに使用できるようになりました。 また、ルート単位永続性のモデルにも対応しています。
すべてのメタ言語が特にキーボードナビゲーション、エディタにおけるプレースホルダーセルの動作に関して同じスタイルと編集操作感、および「New Root」の外観を提供するようになりました。