Ohhnews

分类导航

$ cd ..
Jetbrains Blog原文

JetBrains MPS 2026.1 早期预览版 (EAP) 正式发布

#jetbrains#mps#ide#软件开发#版本更新

MPS 2026.1 早期预览版 (EAP) 于今日正式开启。欢迎下载首个 2026.1 EAP 版本并进行体验!

下载 MPS 2026.1 EAP

除了大量的漏洞修复外,本次构建版本还引入了几项关键改进。

迁移至 IntelliJ Platform 2026.1、JDK 25 和 Kotlin 2.3

本次 MPS 2026.1 EAP 构建版本完成了向当前一代 IntelliJ 平台的跨越。运行时环境升级为 JDK 25,内置 Kotlin 版本更新至 2.3.0。此外,MPS 现在会从 Kotlin 代码库中构建并发布其专有的 kotlinx-metadata-klib / kotlin-metadata-jvm 工件,并匹配 2.3.0 标签。此举恢复了对基于 KLib 的 Kotlin 存根(stubs)支持,而此前公开的 kotlinx-metadata-klib:0.0.6 已无法提供该功能。

支持针对特定自然语言检查 ICheckedNamePolicy

MPS 现已集成 IntelliJ 平台的自然语言支持(由 Grazie 提供)。这意味着您可以根据特定自然语言的规则,检查 ICheckedNamePolicy 实例(如意图、操作或工具)中的字符串值是否具有正确的首字母大写格式。

[LOADING...]

得益于此项更改,您可以为 MPS 安装特定语言的自然语言支持,IDE 将自动检测字符串中使用的语言,并验证各个单词的大小写是否正确。您也可以绕过语言检测机制,手动指定所需的语言。

除默认的 标题大小写 (Title-case) 规则外,MPS 还提供了其他三种选项:

  • 句首大写 (Sentence-case):遵循 IntelliJ 平台的规则。
  • 继承 (Inherited):使用最近的祖先 ICheckedNamePolicy 的大小写规则。
  • 无大小写规则

二元运算可拆分为多行

在编辑器中,您现在可以将过长的二元运算表达式拆分为多行。通过专门的意图操作,您可以在给定 BinaryOperation 的单行和多行布局之间进行切换。

[LOADING...]

新增布尔编辑器样式:read-only-inspector

全新的 read-only-inspector 样式会对检查器(inspector)中的所有编辑器单元强制执行只读属性。当此样式应用于主编辑器中的某个单元格时,一旦选中该单元格,检查器中对应的节点即变为只读状态。该新样式具有以下特性:

  • 默认情况下处于禁用状态。
  • 该样式与 read-only 样式一样,支持继承和覆盖。
  • 对主编辑器单元格无影响。
  • 通过此机制设置的 read-only 样式,可以被检查器编辑器单元树中更深层的任何单元格覆盖。

构建语言 (Build Language) 中的传递依赖

构建语言不再强制要求在 dependencies 中列出每一个可传递的构建脚本。这意味着一个依赖于 BuildB 的构建脚本 BuildA,现在可以直接通过 BuildB 访问 BuildC(前提是 BuildB 依赖于 BuildC),而无需显式列出 BuildC。生成器会为这些情况生成 ${artifacts.BuildC} Ant 属性,这些属性可由外部构建工具(如 Gradle、Maven 等)提供。

这使您可以将大型构建拆分为较小的构建,而无需强制每个用户更新依赖列表。例如,单个 platform 构建脚本可以封装跨子项目使用的一组不断增长的外部库。

通过记录的依赖项实现更可靠的迁移

以往的迁移代码是根据迁移时收集的实际模块依赖项和已用语言来决定应用哪些迁移,但版本信息却是从模块描述符中记录的依赖快照中读取的。这种不匹配可能导致迁移过程使用的环境视图与模块最后修改时的环境视图不一致。

在本次 2026.1 EAP 版本中,迁移机制始终使用模块在最后修改时记录的依赖项和已用语言,而非当前可观察的状态。迁移检查器也进行了相应的重构,现在它会复用迁移过程中已收集的信息,而不是按需重新计算。

改进的 Java 存根 (Java stubs)

一组长期存在的 Java 存根漏洞已得到修复,显著提高了为导入的 .jar 文件和 Java Sources 模型根生成的 BaseLanguage 存根的准确性:

  • MPS-33174 -- 具有 InnerClasses 属性的类现在可以正确转换为 BaseLanguage 存根(该问题自 2021 年以来一直存在)。签名中的内部类信息和参数化所有者类型得以保留,因此泛型外部类的内部类的字段和方法现在显示正确的类型,而不会折叠为外部类。
  • MPS-39375 -- 内部类泛型方法中的类型变量现已得到处理,引用外部类类型变量的方法不再显示 java.lang.Object
  • MPS-39007 -- Java 源存根模型的每个根上不再出现虚假的 Java imports annotation is present 错误。
  • MPS-39565 -- Java 源存根根节点不会再因包含模块属性的更改而消失,因此当模块属性更改时,项目代码对这些根的引用将保持完整。

现代化的项目生命周期

随着 MPSProject 从传统的 IntelliJ IDEA ProjectComponent 迁移至项目服务,MPS 相关功能需要一种可靠的方式来接收关于 MPSProject 可用性变化的通知。

本次版本引入了一种专门用于管理 MPSProject 启动和关闭活动的机制,使 MPS 能够控制这些活动的排序、分组、顺序和线程处理。这是平台原有的 ProjectActivity / MPSProjectActivity 所无法提供的。

工作原理:实现者通过带有 listenerClass 和可选整数 priorityProjectLifecycleListener.Bean,在 MPSCore.xml 中声明的 jetbrains.mps.project.lifecycleListener 扩展点进行注册。MPSProject 内部的 LifecycleEventDispatch.java 可以触发:

  • projectReady(非阻塞)
  • projectDiscarded(阻塞)
  • asyncProjectClosed(非阻塞)

默认使用 Wayland

在支持的 Linux 系统上,MPS 现在将 Wayland 作为默认显示协议。在具备 Wayland 环境的情况下,MPS 会自动切换到原生的 Wayland 后端,而不再依赖 X11 兼容层,从而符合现代 Linux 桌面标准。

此转换改善了与系统的整体集成,在 Wayland 合成器(compositors)中提供了更好的稳定性,对输入法和拖放操作提供了适当支持,并实现了更一致的渲染效果——特别是在 HiDPI 和分数缩放设置下。虽然用户体验基本保持不变,但由于 Wayland 的架构原因,可能会注意到一些差异(如窗口定位或装饰)。X11 仍然得到全面支持,并可在需要时作为备选方案,确保在所有 Linux 环境下的兼容性。

您可以点击此处查看已修复问题的完整列表。

JetBrains MPS 团队