Что нового в MPS 2025.3

В MPS 2025.3 был серьезно переработан язык JavaDoc, заметно изменены планы генерации и существенно обновлен рефлексивный редактор. Кроме того, добавлена поддержка действий с клавиатуры в логическом представлении Logical View, а в TextIcon теперь есть разные визуальные варианты для светлой и темной темы интерфейса.

Полный список изменений — ниже.

Переработка языка JavaDoc

Язык JavaDoc был полностью переведен на использование языка jetbrains.mps.lang.text для представления и редактирования текста. Для пользователей это изменение практически не заметно. При этом оно позволило устранить множество проблем:

  • Теперь редактирование выполняется аналогично другим MPS-языкам, которые используют jetbrains.mps.lang.text, как, например, комментарии BaseLanguage или документация языка описания структуры. Подробнее о редактировании текста — на странице фасета документации.
  • Текст можно копировать из JavaDoc, комментариев BaseLanguage, комментариев документации языка и других мест, где используется jetbrains.mps.lang.text, и вставлять в любые из таких мест. Кроме того, можно копировать и вставлять простой текст.
  • Теперь текст может содержать форматирование, например жирный шрифт или курсив. Такое форматирование в полученных исходных файлах Java оформляется тегами HTML.

Одновременно были решены несколько проблем, связанных с языком JavaDoc:

  • Описание тегов блоков было изменено и теперь использует jetbrains.mps.lang.text вместо свойств строки, поэтому в блочных тегах доступны те же функции редактирования, копирования и вставки, а также стиля.
  • Блочные теги теперь поддерживают многострочные описания.
  • И блочные, и строчные теги теперь корректно обрабатываются при получении из источников на Java.
  • Добавлен новый строчный тег {@literal ...} в соответствии с требованиями спецификации языка Java.
  • Код внутри CodeSnippet корректно разрешает локальные переменные.
  • NodeWrapper теперь корректно генерирует текст для содержащихся в нем узлов.

В BaseLanguage доступна вставка как JavaDoc

Помимо существующих действий Paste as Java Statement и Paste as Class Content, переработанный язык JavaDoc поддерживает новое действие для легкой вставки текстового кода JavaDoc в BaseLanguage. Главное преимущество этого действия в том, что оно обеспечивает корректный парсинг кода JavaDoc в виде строк текста, блочных и строчных тегов JavaDoc, включая возможные разрешения ссылок (например, для тегов @param или {@link }).

Новое действие Paste as JavaDoc выполняет парсинг текста из буфера и вставляет его в комментарий JavaDoc в текущей позиции курсора. Если курсор не находится в существующем комментарии JavaDoc, действие присоединяет обработанные элементы JavaDoc к JavaDoc следующего определения поля/метода/класса, создавая при необходимости новый файл JavaDoc.

Изменения в планах генерации

Мы внесли ряд крупных изменений в планы генерации, сделав более удобной работу с трансформациями сложных моделей. Новое понятие PlanContribution полностью заменяет экспериментальную функцию fork as, которая появилась в версии 2024.1.

Кроме того, мы добавили механизм обозначения модели ветки (для любой ветки, созданной из плана или дополнения к плану) с помощью дополнительных атрибутов модели. Это можно использовать, например, если автор проекта языка/плана хочет добавить собственные атрибуты модели, чтобы идентифицировать результаты определенной ветки для последующей обработки. Один из атрибутов, которые используются в самом MPS, — targetFacet (см. модель jetbrains.mps.generator.extensions.common). Он указывает <mps.make>, к какому GenerationTargetFacet/ModuleFacet обращаться при определении правильного местоположения результатов для той или иной модели.

Условные ветвления в планах генерации

И шаг fork, и PlanContribution в плане генерации поддерживают активацию при выполнении заданного условия. В новой версии выбранные ветки плана можно активировать только при выполнении определенных критериев. В настоящее время в MPS используется условное выражение, которое проверяет значения указанных plan parameters. В дальнейшем мы планируем расширить использование выражений, обеспечив поддержку логических (and/or) и других возможных операций, сохраняя строгую интерпретацию планов генерации (т. е. в планах не должно быть кода BaseLanguage).

Автор проекта языка может указать собственные классы ParameterDeclaration. Значения этих параметров могут быть добавлены с помощью точки расширения PlanParameterContributor. В MPS включен ряд предварительно заданных параметров. Подробную информацию о них см. в модели jetbrains.mps.generator.extensions.common.

Светлый и темный варианты TextIcon

Слои TextIcon теперь можно настроить на использование светлой, темной или обеих тем. Кроме того, литералы цвета в определении TextIcon могут передавать разные значения для светлой и темной темы.

Переработанный рефлексивный редактор

Интерфейс используемого по умолчанию рефлексивного редактора был изменен. Редактор просмотра, использовавшийся по умолчанию, был объединен с рефлексивным редактором, так что путаницы между ними больше не будет.

Использование сочетаний клавиш в представлении Project

Мы существенно улучшили процесс создания новых элементов на панели Logical представления Project с использованием сочетаний клавиш. Новые модули, модели и узлы теперь можно добавить без мыши.

Подсветка только видимых использований

Подсветка использований в узле в текущем положении курсора теперь ограничивается только ссылками, которые в настоящий момент видны в редакторе. Использования в узлах, которые не отображаются в редакторе узлов, не подсвечиваются.

Исправленные ошибки

В MPS 2025.3 исправлено большое число ошибок. Полный список устраненных проблем приведен здесь.

Обновления платформы

Тема по умолчанию: Islands

В MPS 2025.3 встроена новая тема Islands, которая теперь используется по умолчанию.

Руководство по миграции

Перед каждым крупным релизом мы готовим инструкции по миграции с более старых версий MPS, чтобы все прошло гладко. Внимательно прочитайте обновленное руководство по миграции.