Новый способ объявления перечисляемых типов данных позволяет определить список вариантов в компактной форме, указав для каждого варианта именованное значение. При необходимости вы можете настроить способ отображения некоторых значений или выбрать значение по умолчанию, которое будет использоваться, если свойству не было явно задано какое-либо значение.
Уже довольно давно мы получали просьбы реализовать возможность настройки в MPS некоторых сообщений об ошибках. Благодаря запросу, поступившему от одного из наших коммерческих клиентов, мы смогли присвоить этой функциональности максимальный приоритет. Теперь можно изменять все ограничения сообщений об ошибках. В следующих версиях мы собираемся сделать эти возможности по настройке доступными и для других видов ошибок.
Для настройки текста сообщений об ошибках мы добавили новый аспект «feedback».
Мы создали язык ограничений на основе правил, который в будущем заменит доступное в настоящий момент ограничение canBe* из стандартного языка ограничений MPS. В настоящее время язык ограничений на основе правил является экспериментальной функциональностью, поэтому, вероятнее всего, сильно изменится в последующих релизах.
В меню Git теперь есть новое действие, позволяющее отобразить историю изменений в VCS для конкретного корня. Действие доступно из контекстного меню редактора.
Теперь доступен полнотекстовый поиск по значениям свойств. Действие Edit–>Find–>Find Text in Project action (Ctrl+Alt+Shift+F) позволяет находить узлы со свойствами, в значениях которых встречается указанный текст.
Один из распространенных сценариев использования языка для написания тестов — это проверка узлов на наличие сообщений об ошибках и предупреждений. В некоторых случаях подсистема тестирования MPS не различала разные виды ошибок, затрагивающие один и тот же узел. Это могло приводить к путанице: даже если пользователь явно указывал ожидаемый тип ошибки в аннотации теста, другие ошибки и предупреждения, затрагивающие соответствующий узел, не генерировали ошибок тестирования.
Когда вы определяете правило проверки для того или иного концепта, оно вызывается для каждого узла, являющегося экземпляром этого концепта.
Теперь, вместо того чтобы переопределять любые правила, унаследованные от родительского концепта, вы можете непосредственно указать список правил, которые необходимо переопределить. Настоятельно рекомендуем вам проверить все свои правила проверки, использующие функциональность переопределения, и решить, какие из них нуждаются в переопределении.
Теперь запросы проверки соответствия типов можно выполнять только с помощью нового API-фасада.
Новый API: см. jetbrains.mps.typechecking.TypecheckingFacade и связанные с ним классы.
Устаревший API: иерархия пакетов jetbrains.mps.typesystem.* теперь является устаревшей. Использовать классы из этой иерархии не рекомендуется, за исключением кода, автоматически сгенерированного из содержимого аспекта «typesystem».
Здесь приведен предварительный план изменений, затрагивающих поддержку систем типов. Аспект, отвечающий за реализацию системы типов, и использующийся в нем язык будут объявлены устаревшими. Со временем язык и его поддержка в среде выполнения будут вынесены в отдельный плагин.
Будет добавлен новый аспект, который фактически заменит часть аспекта typesystem, не относящуюся к системе типов. Для извлечения правил проверки из старого аспекта typesystem будет предоставлена миграция.
Будет реализован новый фреймворк проверки соответствия типов с поддержкой со стороны среды выполнения, вследствие чего устаревшие механизмы будут переписаны с нуля.
Процесс сборки теперь корректно работает в фоне. Мы провели работу, чтобы повысить отзывчивость интерфейса во время фоновой сборки. Чтобы вернуться к предыдущей версии, используйте настройку: Preferences–>Project Settings–>Perform in background.
MPS теперь будет запускаться в JDK 11. Это повлияет на механизм загрузки моделей-заглушек. Большей части вашего проекта миграция не потребуется, за исключением редких случаев использования некоторых классов и полей, которые были переупакованы в JDK 11.
При использовании плагина для IntelliJ IDEA модули с MPS Facet теперь должны быть ассоциированы с JDK версии 11. В противном случае генерация кода завершится неудачно.
Одной из главных целей данного релиза были улучшения в BaseLanguage. Мы исправили множество проблем, затрагивющих языки BaseLanguage, начиная с ошибок и заканчивая проблемами, влияющими на удобство использования.
Мы учли пожелания сообщества и добавили новый образец проекта с генерацией XML.
Теперь доступна проверка орфографии для однострочных комментариев, текста Javadoc и строковых литералов.
Теперь настройки merge-драйвера являются не глобальными, а локальными (отдельными для каждого Git-репозитория), благодаря чему каждая установленная копия MPS может иметь свой merge-драйвер.