Что нового в MPS 2019.2

Перечисляемый тип данных

Перечисляемый тип данных

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

Подробнее

Индивидуальная настройка сообщений об ошибках

Индивидуальная настройка сообщений об ошибках Спонсировано клиентом

Уже довольно давно мы получали просьбы реализовать возможность настройки в MPS некоторых сообщений об ошибках. Благодаря запросу, поступившему от одного из наших коммерческих клиентов, мы смогли присвоить этой функциональности максимальный приоритет. Теперь можно изменять все ограничения сообщений об ошибках. В следующих версиях мы собираемся сделать эти возможности по настройке доступными и для других видов ошибок.

Для настройки текста сообщений об ошибках мы добавили новый аспект «feedback».

Подробнее

Язык ограничений на основе правил

Язык ограничений на основе правил

Мы создали язык ограничений на основе правил, который в будущем заменит доступное в настоящий момент ограничение canBe* из стандартного языка ограничений MPS. В настоящее время язык ограничений на основе правил является экспериментальной функциональностью, поэтому, вероятнее всего, сильно изменится в последующих релизах.

Подробнее

История корня

История корня

В меню Git теперь есть новое действие, позволяющее отобразить историю изменений в VCS для конкретного корня. Действие доступно из контекстного меню редактора.

Подробнее

Поиск по данным

Поиск по данным

Теперь доступен полнотекстовый поиск по значениям свойств. Действие Edit–>Find–>Find Text in Project action (Ctrl+Alt+Shift+F) позволяет находить узлы со свойствами, в значениях которых встречается указанный текст.

Проверка на конкретные ошибки

Проверка на конкретные ошибки

Один из распространенных сценариев использования языка для написания тестов — это проверка узлов на наличие сообщений об ошибках и предупреждений. В некоторых случаях подсистема тестирования MPS не различала разные виды ошибок, затрагивающие один и тот же узел. Это могло приводить к путанице: даже если пользователь явно указывал ожидаемый тип ошибки в аннотации теста, другие ошибки и предупреждения, затрагивающие соответствующий узел, не генерировали ошибок тестирования.

Подробнее

Шаблоны в определениях правил проверки

Шаблоны в определениях правил проверки

Когда вы определяете правило проверки для того или иного концепта, оно вызывается для каждого узла, являющегося экземпляром этого концепта.

Теперь, вместо того чтобы переопределять любые правила, унаследованные от родительского концепта, вы можете непосредственно указать список правил, которые необходимо переопределить. Настоятельно рекомендуем вам проверить все свои правила проверки, использующие функциональность переопределения, и решить, какие из них нуждаются в переопределении.

Подробнее

API-фасад для проверки соответствия типов

Теперь запросы проверки соответствия типов можно выполнять только с помощью нового API-фасада.

Новый API: см. jetbrains.mps.typechecking.TypecheckingFacade и связанные с ним классы.

Устаревший API: иерархия пакетов jetbrains.mps.typesystem.* теперь является устаревшей. Использовать классы из этой иерархии не рекомендуется, за исключением кода, автоматически сгенерированного из содержимого аспекта «typesystem».

Планируемые изменения в будущих релизах

Здесь приведен предварительный план изменений, затрагивающих поддержку систем типов. Аспект, отвечающий за реализацию системы типов, и использующийся в нем язык будут объявлены устаревшими. Со временем язык и его поддержка в среде выполнения будут вынесены в отдельный плагин.

Будет добавлен новый аспект, который фактически заменит часть аспекта typesystem, не относящуюся к системе типов. Для извлечения правил проверки из старого аспекта typesystem будет предоставлена миграция.

Будет реализован новый фреймворк проверки соответствия типов с поддержкой со стороны среды выполнения, вследствие чего устаревшие механизмы будут переписаны с нуля.

Сборка в фоне

Процесс сборки теперь корректно работает в фоне. Мы провели работу, чтобы повысить отзывчивость интерфейса во время фоновой сборки. Чтобы вернуться к предыдущей версии, используйте настройку: Preferences–>Project Settings–>Perform in background.

Java 11 в качестве среды выполнения

MPS теперь будет запускаться в JDK 11. Это повлияет на механизм загрузки моделей-заглушек. Большей части вашего проекта миграция не потребуется, за исключением редких случаев использования некоторых классов и полей, которые были переупакованы в JDK 11.

При использовании плагина для IntelliJ IDEA модули с MPS Facet теперь должны быть ассоциированы с JDK версии 11. В противном случае генерация кода завершится неудачно.

BaseLanguage

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

Новый образец проекта

Мы учли пожелания сообщества и добавили новый образец проекта с генерацией XML.

Проверка орфографии в комментариях BL

Теперь доступна проверка орфографии для однострочных комментариев, текста Javadoc и строковых литералов.

Локальная конфигурация Git

Теперь настройки merge-драйвера являются не глобальными, а локальными (отдельными для каждого Git-репозитория), благодаря чему каждая установленная копия MPS может иметь свой merge-драйвер.