MPS 2021.3 最新变化

MPS 2021.3 提供 Coderules、实验性 Kotlin 支持、Java lambda 以及一系列 VCS 改进等。

Coderules

多年来,我们一直在开发一种新的类型系统,这并不是什么秘密。 实现这一目标的道路并不那么简单或轻而易举,但我们终于开发出一些可以展示的东西。 Coderules 仍处于测试阶段,这就是它未与 MPS 捆绑在一起的原因。

由于这是一个完整的子系统,我们准备了一个引导您了解其基础知识的在线课程。

转到课程

实验性 Kotlin 语言支持

实验性 Kotlin 语言支持

一个实验性的 Kotlin 实现现在与 MPS 捆绑在一起。 尽管它支持语言中的大多数结构元素(及其文本生成),但仍然只是部分受到支持。

了解详情。

注解中的 Hide Revision(隐藏修订)操作

注解中的 Hide Revision(隐藏修订)操作

新操作 Hide Revision(隐藏修订)允许您就地从注解结果中排除修订,并在编辑器和装订区域中显示结果。 可以使用相反的操作 Restore Hidden Revisions(恢复隐藏的修订)来恢复排除的修订。

了解详情。

优化 Annotate Revision(注解修订)操作结果

MPS 中的 Annotate(注解)操作不如文本文件的 git blame(Git 追溯)操作快,因为注解结果是为模型构建的。 Annotate revision(注解修订)和 Annotate previous revision(注解之前的修订)操作使用与 Annotate(注解)操作相同的算法来构造结果,并且速度也很慢。 Annotate revision(注解修订)和 Annotate previous revision(注解之前的修订)操作的结果可以使用从初始 Annotate(注解)操作获得的结果立即构建。

合并根中的 Details(详细信息)对话框

合并根中的 Details(详细信息)对话框

引入了 Show Details(显示详细信息)操作以在合并期间提供有关分支的更多详细信息。 可从 Merge Revision(合并修订)窗口访问该操作。

Diff(差异)对话框工具提示中的简短更改说明

Diff(差异)对话框工具提示中的简短更改说明

我们引入了一个新操作,可以更改 Diff(差异)对话框工具提示中更改的说明。 说明更短且更易读。

增强的编辑器工具提示
客户赞助

现在,可以点击工具提示内的链接,并且工具提示弹出窗口会保留在主应用程序窗口内。 如果包含许多文本,您还可以在工具提示内滚动。

合并过程中的新差异算法

合并过程中的新差异算法
客户赞助

开发新算法的目的是为新类型的更改找到冲突、非冲突和对称的更改。 我们引入了一种 UI 机制,用于在 Merge(合并)窗口中在有和没有节点移动跟踪的算法之间进行切换。

了解详情。

在 Diff(差异)对话框中检测嵌套的包装和解包更改

在 Diff(差异)对话框中检测嵌套的包装和解包更改
客户赞助

尽管以前可以检测包装和解包更改内部的内部插入、删除和移动,但无法检测嵌套包装更改。 现在,可以检测嵌套的包装和解包更改。

重新组织了 VCS 设置

重新组织了 VCS 设置

VCS 设置已重新组织,使其更易于发现和使用。 在 Preferences / Settings | Version Control(偏好设置 / 设置 | 版本控制)中,您可以找到用于配置 VCS 的可用设置列表。 此外,我们还为 Directory mappings(目录映射)添加了一个单独的节点,并将后台操作设为默认开启。

如果您转到 Git 节点,可以发现设置已被划分为几个部分,对应最重要的流程:Commit(提交)、Push(推送)和 Update(更新)。

将兼容的闭包生成到 Java lambda 中

将兼容的闭包生成到 Java lambda 中
客户赞助

如果 MPS 闭包兼容,它们现在会被生成到 Java lambda 表达式中。 不兼容包括以下用法:

  • Yield 操作
  • “函数”abstract 类
  • 注解
  • 与父范围冲突的局部变量

了解详情。

元组的映射标签

元组的映射标签
客户赞助

我们引入了实验性功能,可以使用一对节点作为映射的键,node<>, node<> --> node<>。 这在您需要支持两个源概念的情况下很有用。 如果您想试用,它的使用方式与使用带有一个键节点的标签的方式相同。

了解详情。

访问生成器中两个键映射的所有值
客户赞助

除了元组的映射标签功能之外,我们现在还支持一种访问给定两个键的所有已知映射的查询,genContext.get output list LABEL for (node1, node2)

性能跟踪报告解析动态引用所花费的时间

由于大量范围评估,解析动态引用通常会减慢模型到模型的转换速度。 性能跟踪将这一重要信息隐藏在一个宽泛的“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 中,IDE 将在位于编辑器左侧的单独 Changes(更改)工具窗口中显示提交之间的差异。

新的 Push All up to Here(推送此前所有提交)操作

新的 Push All up to Here(推送此前所有提交)操作

此功能允许您只推送您确信的提交,将其他提交留待以后处理。 要使用此操作,首先右键点击停止处的提交,调用上下文菜单,然后选择新的 Push All up to Here(推送此前所有提交)操作。

2021.3 迁移指南

与每个版本一样,我们准备了迁移指南,以便从旧版本顺利过渡。