MPS 2021.3 の新機能

MPS 2021.3 には、Coderules、実験的 Kotlin サポート、Java ラムダ、VCS に関する多数の改善などが含まれています。

Coderules

ご存じのように、JetBrains はここ数年をかけて新しい型システムに取り組んでいます。 この目標を達成するまでの道のりは容易でも単純でもありませんでしたが、ようやくお見せできるものが出来上がりました。 ただし、Coderules はまだベータ段階にあるため、MPS にはバンドルされていません。

これは完全なサブシステムであるため、その基礎をご紹介するオンラインコースを用意しました。

コースにアクセス

実験的 Kotlin 言語サポート

実験的な Kotlin 言語のサポート

MPS に実験的な Kotlin の実装が組み込まれました。 この言語のほとんどの構造要素(とそのテキスト生成)がサポートされてはいますが、サポートはあくまでも限定的なものです。

詳細情報

注釈の Hide Revision(リビジョンを非表示)アクション

注釈の Hide Revision(リビジョンを非表示)アクション

新しい Hide Revision(リビジョンを非表示)アクションを使用すると、あるリビジョンをその場で注釈の結果から除外し、その結果をエディターとガターの両方で表示することができます。 除外されたリビジョンは、その逆の操作を行う Restore Hidden Revisions(非表示のリビジョンを復元)アクションで復元することができます。

詳細情報

Annotate Revision(リビジョンに注釈を追加)アクションの結果の最適化

MPS の Annotate(注釈)アクションは、注釈の結果がそのモデルに対して作成されるため、テキストファイルの git blame 演算ほど高速ではありません。 Annotate revision(リビジョンに注釈を追加)とAnnotate previous revision(以前のリビジョンに注釈を追加)アクションは、Annotate アクションと同じアルゴリズムを使用して結果を作成しているため、同様に遅くなっていました。 Annotate revisionAnnotate previous revision アクションの結果は、最初の Annotate アクションで得た結果を使用して即時に生成できます。

マージルートの詳細ダイアログ

マージルートの詳細ダイアログ

マージ中のブランチに関するより詳細な情報を取得できるよう、Show Details(詳細を表示)アクションが導入されました。 このアクションは、Merge Revision(リビジョンをマージ)ウィンドウからアクセスできます。

Diff ダイアログのツールチップの変更説明を短縮

Diff ダイアログのツールチップで変更の説明を短縮

Diff ダイアログのツールチップで変更の説明を変更できる新しいアクションを導入しました。 説明が短縮されて読みやすくなります。

エディターツールチップの強化
お客様からのご提案

ツールチップ内のリンクをクリックした際、ツールチップのポップアップウィンドウをアプリケーションのメインウィンドウ内で開けるようになりました。 ツールチップ内のテキストが長い場合は、スクロールすることも可能です。

マージプロセスの新しい diff アルゴリズム

マージプロセスの新しい diff アルゴリズム
お客様からのご提案

新しい型の変更に対して競合する変更、競合しない変更、および対称的な変更を検出する新しいアルゴリズムが開発されました。 Merge(マージ)ウィンドウでノードの移動トラッキングを使用するアルゴリズムと使用しないアルゴリズムを切り替える UI メカニズムを導入しています。

詳細情報

diff ダイアログでネストの囲みと囲み解除の変更を検出

diff ダイアログでネストの囲みと囲み解除の変更を検出
お客様からのご提案

囲みまたは囲み解除の変更内での挿入、削除、および移動を検出することは以前から可能でしたが、ネストの囲みの変更は検出されていませんでした。 そこで、ネストの囲みと囲み解除の変更を検出できるようにしました。

VCS 設定の再構成

VCS 設定の再構成

VCS 設定を再構成して項目を見つけやすくし、使い勝手を改善しました。 Preferences(環境設定)/Settings(設定)| Version Control(バージョン管理) には、VCS の構成に使用できる設定のリストが表示されます。 さらに、Directory mappings(ディレクトリマッピング)に個別のノードを追加し、バックグラウンド動作がデフォルトでオンになるように変更しています。

Git ノードに移動すると、設定が、Commit(コミット)、Push(プッシュ)、Update(更新)といった最も重要なプロセスを処理するセクションに分割されていることが分かるかと思います。

互換性のあるクロージャの Java ラムダへの生成

互換性のあるクロージャの Java ラムダへの生成
お客様からのご提案

MPS クロージャは、互換性がある場合に Java ラムダ式に生成されるようになりました。 以下の使用には互換性がありません。

  • Yield 演算
  • 「関数型」抽象クラス
  • アノテーション...
  • 親スコープと競合するローカル変数

詳細情報

タプルのマッピングラベル

タプルのマッピングラベル
お客様からのご提案

ノードペアを node<>, node<> --> node<> のようにマッピングのキーとして使用する実験的機能を導入しました。 これは、2 つのソース概念をサポートする必要がある場合に役立ちます。 お試しになる場合は、1 つのキーノードでラベルを使用する方法で使用できます。

詳細情報

ジェネレーターで 2 つのキーマッピングのすべての値にアクセス
お客様からのご提案

タプルのマッピングラベルの機能とは別に、genContext.get output list LABEL for (node1, node2) のように、特定の 2 つのキーすべての既知のマッピングにアクセスするクエリをサポートしました。

動的参照の解決にかかった時間をパフォーマンストレースでレポート

多数のスコープ評価により、動的参照の解決によって、モデル間の変換速度が低下することがよくあります。 パフォーマンストレースは、この重要な部分の情報を曖昧な「restoring references」というタイトルの下に非表示にしています。 そこで、動的参照の復元にかかった時間を、通常の参照や静的参照の復元にかかった時間とは別にレポートするようにしました。

プロジェクトの移行を改善

プロジェクトの移行を改善

このリリースではプロジェクトの移行を作成するプロセスを単純化しました。 プラグインソリューションを作成し、移行コードとアプリケーションのプラグインルートを記述し、このプラグインソリューションをビルドスクリプトとともに含めるだけで完了です。

Ant <migrate> タスクの改善

Ant <migrate> タスクが複数のプロジェクト仕様をサポートするようになり、複数のプロジェクトをまとめて移行できるようになりました。 ネストした <project path="”/> 要素か通常の Ant の <dirset> を使用して、タスクのプロジェクトロケーションを列挙することができます。

リモートブランチ対応の Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)

リモートブランチ対応の Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)

Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)アクションを使うと、選択したブランチをチェックアウトし、現在チェックアウトされているブランチでリベースすることができます。 以前はローカルブランチでのみ実行できるアクションでしたが、MPS 2021.3 では、リモートブランチにも適用できるようになりました。

新しい Changes(変更)ツールウィンドウ

新しい Changes(変更)ツールウィンドウ

MPS 2021.3 より、差分をエディターの左側にある個別の Changes(変更)ツールウィンドウに表示するようになりました。

新しい Push All up to Here(ここまでのすべてをプッシュ)アクション

新しい Push All up to Here(ここまでのすべてをプッシュ)アクション

この機能を使うと、確信のあるコミットのみをプッシュし、残りは後でプッシュするように残しておくことができます。 これを使用するには、最後にプッシュするコミットを選択し、それを右クリックしてコンテキストメニューを呼び出し、新しい Push All up to Here(ここまでのすべてをプッシュ)アクションを選択してください。

移行ガイド 2021.3

すべてのリリースと同様に、古いバージョンからの移行を円滑に行えるよう、移行ガイドを用意しました。