ご存じのように、JetBrains はここ数年をかけて新しい型システムに取り組んでいます。 この目標を達成するまでの道のりは容易でも単純でもありませんでしたが、ようやくお見せできるものが出来上がりました。 ただし、Coderules はまだベータ段階にあるため、MPS にはバンドルされていません。
これは完全なサブシステムであるため、その基礎をご紹介するオンラインコースを用意しました。
MPS に実験的な Kotlin の実装が組み込まれました。 この言語のほとんどの構造要素(とそのテキスト生成)がサポートされてはいますが、サポートはあくまでも限定的なものです。
新しい Hide Revision(リビジョンを非表示)アクションを使用すると、あるリビジョンをその場で注釈の結果から除外し、その結果をエディターとガターの両方で表示することができます。 除外されたリビジョンは、その逆の操作を行う Restore Hidden Revisions(非表示のリビジョンを復元)アクションで復元することができます。
MPS の Annotate(注釈)アクションは、注釈の結果がそのモデルに対して作成されるため、テキストファイルの git blame 演算ほど高速ではありません。 Annotate revision(リビジョンに注釈を追加)とAnnotate previous revision(以前のリビジョンに注釈を追加)アクションは、Annotate アクションと同じアルゴリズムを使用して結果を作成しているため、同様に遅くなっていました。 Annotate revision と Annotate previous revision アクションの結果は、最初の Annotate アクションで得た結果を使用して即時に生成できます。
マージ中のブランチに関するより詳細な情報を取得できるよう、Show Details(詳細を表示)アクションが導入されました。 このアクションは、Merge Revision(リビジョンをマージ)ウィンドウからアクセスできます。
Diff ダイアログのツールチップで変更の説明を変更できる新しいアクションを導入しました。 説明が短縮されて読みやすくなります。
ツールチップ内のリンクをクリックした際、ツールチップのポップアップウィンドウをアプリケーションのメインウィンドウ内で開けるようになりました。 ツールチップ内のテキストが長い場合は、スクロールすることも可能です。
新しい型の変更に対して競合する変更、競合しない変更、および対称的な変更を検出する新しいアルゴリズムが開発されました。 Merge(マージ)ウィンドウでノードの移動トラッキングを使用するアルゴリズムと使用しないアルゴリズムを切り替える UI メカニズムを導入しています。
囲みまたは囲み解除の変更内での挿入、削除、および移動を検出することは以前から可能でしたが、ネストの囲みの変更は検出されていませんでした。 そこで、ネストの囲みと囲み解除の変更を検出できるようにしました。
VCS 設定を再構成して項目を見つけやすくし、使い勝手を改善しました。 Preferences(環境設定)/Settings(設定)| Version Control(バージョン管理) には、VCS の構成に使用できる設定のリストが表示されます。 さらに、Directory mappings(ディレクトリマッピング)に個別のノードを追加し、バックグラウンド動作がデフォルトでオンになるように変更しています。
Git ノードに移動すると、設定が、Commit(コミット)、Push(プッシュ)、Update(更新)といった最も重要なプロセスを処理するセクションに分割されていることが分かるかと思います。
MPS クロージャは、互換性がある場合に Java ラムダ式に生成されるようになりました。 以下の使用には互換性がありません。
ノードペアを node<>, node<> --> node<>
のようにマッピングのキーとして使用する実験的機能を導入しました。 これは、2 つのソース概念をサポートする必要がある場合に役立ちます。 お試しになる場合は、1 つのキーノードでラベルを使用する方法で使用できます。
タプルのマッピングラベルの機能とは別に、genContext.get output list LABEL for (node1, node2)
のように、特定の 2 つのキーすべての既知のマッピングにアクセスするクエリをサポートしました。
多数のスコープ評価により、動的参照の解決によって、モデル間の変換速度が低下することがよくあります。 パフォーマンストレースは、この重要な部分の情報を曖昧な「restoring references」というタイトルの下に非表示にしています。 そこで、動的参照の復元にかかった時間を、通常の参照や静的参照の復元にかかった時間とは別にレポートするようにしました。
このリリースではプロジェクトの移行を作成するプロセスを単純化しました。 プラグインソリューションを作成し、移行コードとアプリケーションのプラグインルートを記述し、このプラグインソリューションをビルドスクリプトとともに含めるだけで完了です。
Ant <migrate> タスクが複数のプロジェクト仕様をサポートするようになり、複数のプロジェクトをまとめて移行できるようになりました。 ネストした <project path="”/> 要素か通常の Ant の <dirset> を使用して、タスクのプロジェクトロケーションを列挙することができます。
Checkout and Rebase onto Current(チェックアウトして現在のブランチでリベース)アクションを使うと、選択したブランチをチェックアウトし、現在チェックアウトされているブランチでリベースすることができます。 以前はローカルブランチでのみ実行できるアクションでしたが、MPS 2021.3 では、リモートブランチにも適用できるようになりました。
MPS 2021.3 より、差分をエディターの左側にある個別の Changes(変更)ツールウィンドウに表示するようになりました。
この機能を使うと、確信のあるコミットのみをプッシュし、残りは後でプッシュするように残しておくことができます。 これを使用するには、最後にプッシュするコミットを選択し、それを右クリックしてコンテキストメニューを呼び出し、新しい Push All up to Here(ここまでのすべてをプッシュ)アクションを選択してください。
すべてのリリースと同様に、古いバージョンからの移行を円滑に行えるよう、移行ガイドを用意しました。