В MPS 2022.3 вас ждут улучшения правил ограничений, синхронизация времени миграции с расширениями MPS, Kotlin-заглушки для JVM и многое другое.
Язык ограничений на основе правил призван устранить недостатки языка ограничений. В этой версии мы обновили правила, чтобы использовать язык было удобнее.
Модули MPS используются для различных целей, начиная от песочницы, в которой можно поэкспериментировать с вашим языком, и заканчивая написанием рабочего плагина для изменения поведения MPS или платформы IntelliJ IDEA. В MPS 2022.3 модули собраны воедино. Мы переработали страницу Java Facet для модуля Solution, и теперь на ней можно найти все важные настройки и определения общих сценариев, чтобы разработчикам и пользователям языка было проще понять, для чего предназначается модуль. IDEA Plugin Module Facet признан устаревшим и больше использоваться не будет. Мы показываем настройки только для модулей Solution: для модулей Language и Generator применяется тот же подход, но их параметры настраиваются неявно. Подробнее
У MPS активное сообщество пользователей, которое постоянно обогащает экосистему, и мы всегда поощряли использование внешних библиотек для расширения функциональности продукта. Сторонние библиотеки, такие как MPS Extensions, значительно повысили удобство работы с продуктами, разработанными на базе MPS. И хотя это приносит огромную пользу сообществу, есть один недостаток: пользователям приходится ждать миграции внешней библиотеки, прежде чем обновлять MPS. Вместе с itemis, нашим официальным партнером, занимающимся поддержкой расширений для MPS, мы работаем над синхронизацией релизов для более плавного перехода на новую версию.
Разработчики языков теперь могут сократить количество повторяющегося кода, извлекая его во вспомогательные методы прямо внутри корневого узла определения. Эти дополнительные методы могут быть определены в:
Intention-действия также позволяют сохранять в дополнительных полях значения, вычисленные в методе isApplicable, для использования в методе execute.
Теперь можно импортировать заглушки из скомпилированных библиотек Kotlin/JVM, тогда как раньше импорт был возможен только из библиотек Kotlin/Common. Благодаря этому стало возможным использовать библиотеки, скомпилированные под JVM (Java, Kotlin или смешанные) через корень модели Kotlin JVM в опциях вашего модуля. Подробнее
В новую версию MPS вошло несколько небольших изменений и улучшений:
this
теперь может корректно ссылаться на метку (например, this@SomeClass
). $kotlinc_home
, а не жестко запрограммированное местоположение, как было раньше. Теперь можно создать вызов конструктора для заданного вызова, используя преобразование путем ввода открывающей круглой скобки справа от ячейки. Это сработает для любого типа Kotlin, который поддерживает такую операцию (вы можете расширить ее на пользовательские типы), и может облегчить создание выражения по умолчанию для заданного типа, как при создании лямбды из типа функционального интерфейса.
Мы изменили функции расширения в областях, чтобы они не исключали совместимые методы. Однако из-за производительности текущего варианта реализации системы в областях могут быть неприменимые элементы.
Автоматическое разрешение ссылок поможет исправить ссылки в случае выбора неприменимой функции.
Новое intention-действие обновляет узел MPSStartupScript и устанавливает параметры виртуальной машины и значения classpath в соответствии с текущими значениями MPS. В MPS параметры виртуальной машины и значения classpath меняются с каждым релизом. Раньше пользователем приходилось вручную обновлять проекты сборки для автономной IDE.
Перед каждым крупным релизом мы готовим инструкции по миграции с более старых версий MPS, чтобы все прошло гладко. Не забудьте ознакомиться с ними.