Это последний выпуск MPS в текущем году. В этой версии появились новые возможности и улучшения по разным важным направлениям: редактор, генератор, язык компоновки и не только.
Мы очень довольны прогрессом MPS и перспективами дальнейшего развития. Мы всегда прислушиваемся к мнению сообщества, решая, какой еще функционал нужно добавить в MPS, чтобы помочь вам создавать ваши невероятные проекты!
Загрузить MPS 2017.3
Расскажем подробнее о нововведениях.
Мы ввели понятие универсального заполнителя (generic placeholder). Универсальные заполнители могут использоваться для обозначения пустых позиций в любой коллекции на любом языке, а еще в них может находиться некоторое полезное содержимое. По умолчанию узел-заполнитель выглядит в редакторе как пустое место, а его поведение прозрачно — находясь в нём, можно вызвать автодополнение, чтобы заменить заполнитель на какой-то элемент языка, который может в этом месте находиться. Либо можно нажать клавишу Enter и добавить новый элемент в следующую позицию этой коллекции. Универсальный заполнитель вставляется сочетанием клавиш Control/Cmd + Shift + Enter.
Появление универсальных заполнителей позволило реализовать универсальное комментирование в предметно-ориентированных языках (DSL). Чтобы воспользоваться этой возможностью, достаточно импортировать язык jetbrains.mps.lang.text или devkit общего назначения. В результате вы получите язык свободно редактируемых многострочных комментариев с гиперссылками, с возможностью настройки шрифта (жирный, курсив, подчеркивание), внутрь которых еще и можно вставлять код. Для ввода комментария просто переведите курсор на универсальный заполнитель, нажмите «[» и начните печатать.
Если стандартного языка комментариев недостаточно, можно создать свой собственный с дополнительными возможностями.
В определении редактора теперь можно настраивать не только размер и начертание шрифта, но и гарнитуру. Выражение fontFamily позволяет ссылаться на все установленные семейства шрифтов.
Новое действие SELECT_ALL позволяет выбрать все содержимое редактора целиком. Оно вызывается сочетанием клавиш Control/Cmd + A, а его поведение можно настроить в соответствии со своими предпочтениями при помощи карт действий.
Раньше удаление корневых узлов было весьма опасным занятием, потому что при этом терялась история изменений. Теперь мы усовершенствовали механизм undo. Отныне, вернув удаленный корень с помощью undo, можно возвращать изменения, которые были сделаны в этом корневом узле до его удаления.
Контрольные точки теперь поддерживают прохождение по ссылкам, помеченным с помощью mapping label, не требуя одновременной генерации ссылки и того, на что она ссылается. Теперь можно спокойно делать resolve ссылки, даже если узел, на который она ссылается, был сгенерирован в более ранней контрольной точке.
В процессе сборки больше не перезаписываются сгенерированные файлы, содержимое которых идентично только что сгенерированному. Теперь можно рассчитывать на то, что на диске обновляются только действительно измененные файлы.
Корневой узел содержимого «resources», указываемый в модулях, теперь используется для копирования ресурсов в развертываемый модуль. Для переноса в шаблоны копирования ресурсов тех файлов масок, которые раньше были жестко зашиты в коде, предусмотрена специальная миграция.
Задача Ant MPS предоставляет полный контроль над содержимым репозитория с помощью нескольких новых тегов: module, modules и allmpsmodules.
У задачи Ant для миграции теперь более удобный интерфейс.
При возникновении проблем в ходе миграции скрипт Ant прекращает работу и корректно сообщает об ошибках.
Поддерживаются все старые атрибуты для указания расположения mps — переменные окружения mps.home и mps_home, а также атрибут у самой задачи mpshome. Тем не менее, отныне желательно использовать свойство окружения mps.home.
Модули типа devkit, представляющие собой подборки языков и библиотек для конкретных нужд пользователя, теперь содержатся в дистрибутиве не в виде отдельных файлов, а упаковываются в файлы jar так же, как остальные модули. Чтобы автоматически обновить ваш build script и начать запаковывать их по-новому с помощью новой конструкции «module», специально ничего делать не нужно — миграция произойдет автоматически.
Выражение nodePointer из lang.smodel теперь способно ссылаться не только на корневые узлы, но и на любые именованные элементы.
При генерации модели также выполняется сборка всех ее зависимостей, нуждающихся в перегенерации. Это экономит время и позволяет избежать неприятных сюрпризов.
Действие Clone Model корректно обновляет для элементов клонированной модели перекрестные ссылки между разными корнями. Теперь клонированная модель полностью независима от исходной.
На этом всё. Надеемся, вас порадуют все новинки релиза. Мы всегда прислушиваемся к вашему мнению. Присоединяйтесь к нам в Twitter и подключайтесь к нашему каналу slack, чтобы первыми узнавать об обновлениях и делиться вашими отзывами!
Удачи!
Ваша команда JetBrains MPS
The Drive to Develop
Мы очень довольны прогрессом MPS и перспективами дальнейшего развития. Мы всегда прислушиваемся к мнению сообщества, решая, какой еще функционал нужно добавить в MPS, чтобы помочь вам создавать ваши невероятные проекты!
Загрузить MPS 2017.3
Расскажем подробнее о нововведениях.
Редактор
Универсальные заполнители
Мы ввели понятие универсального заполнителя (generic placeholder). Универсальные заполнители могут использоваться для обозначения пустых позиций в любой коллекции на любом языке, а еще в них может находиться некоторое полезное содержимое. По умолчанию узел-заполнитель выглядит в редакторе как пустое место, а его поведение прозрачно — находясь в нём, можно вызвать автодополнение, чтобы заменить заполнитель на какой-то элемент языка, который может в этом месте находиться. Либо можно нажать клавишу Enter и добавить новый элемент в следующую позицию этой коллекции. Универсальный заполнитель вставляется сочетанием клавиш Control/Cmd + Shift + Enter.
Плавающие комментарии
Появление универсальных заполнителей позволило реализовать универсальное комментирование в предметно-ориентированных языках (DSL). Чтобы воспользоваться этой возможностью, достаточно импортировать язык jetbrains.mps.lang.text или devkit общего назначения. В результате вы получите язык свободно редактируемых многострочных комментариев с гиперссылками, с возможностью настройки шрифта (жирный, курсив, подчеркивание), внутрь которых еще и можно вставлять код. Для ввода комментария просто переведите курсор на универсальный заполнитель, нажмите «[» и начните печатать.
Если стандартного языка комментариев недостаточно, можно создать свой собственный с дополнительными возможностями.
Настройка гарнитуры шрифта для ячеек
В определении редактора теперь можно настраивать не только размер и начертание шрифта, но и гарнитуру. Выражение fontFamily позволяет ссылаться на все установленные семейства шрифтов.
Выбрать все
Новое действие SELECT_ALL позволяет выбрать все содержимое редактора целиком. Оно вызывается сочетанием клавиш Control/Cmd + A, а его поведение можно настроить в соответствии со своими предпочтениями при помощи карт действий.
Undo для удаленных узлов
Раньше удаление корневых узлов было весьма опасным занятием, потому что при этом терялась история изменений. Теперь мы усовершенствовали механизм undo. Отныне, вернув удаленный корень с помощью undo, можно возвращать изменения, которые были сделаны в этом корневом узле до его удаления.
Генератор
Связывание моделей контрольных точек
Контрольные точки теперь поддерживают прохождение по ссылкам, помеченным с помощью mapping label, не требуя одновременной генерации ссылки и того, на что она ссылается. Теперь можно спокойно делать resolve ссылки, даже если узел, на который она ссылается, был сгенерирован в более ранней контрольной точке.
Устранение избыточной перезаписи файлов
В процессе сборки больше не перезаписываются сгенерированные файлы, содержимое которых идентично только что сгенерированному. Теперь можно рассчитывать на то, что на диске обновляются только действительно измененные файлы.
Язык компоновки
Новый способ копирования ресурсов модуля
Корневой узел содержимого «resources», указываемый в модулях, теперь используется для копирования ресурсов в развертываемый модуль. Для переноса в шаблоны копирования ресурсов тех файлов масок, которые раньше были жестко зашиты в коде, предусмотрена специальная миграция.
Задачи Ant
Задача Ant MPS предоставляет полный контроль над содержимым репозитория с помощью нескольких новых тегов: module, modules и allmpsmodules.
Улучшения задачи Ant для миграции
У задачи Ant для миграции теперь более удобный интерфейс.
При возникновении проблем в ходе миграции скрипт Ant прекращает работу и корректно сообщает об ошибках.
Поддерживаются все старые атрибуты для указания расположения mps — переменные окружения mps.home и mps_home, а также атрибут у самой задачи mpshome. Тем не менее, отныне желательно использовать свойство окружения mps.home.
Улучшения упаковки пакета разработки
Модули типа devkit, представляющие собой подборки языков и библиотек для конкретных нужд пользователя, теперь содержатся в дистрибутиве не в виде отдельных файлов, а упаковываются в файлы jar так же, как остальные модули. Чтобы автоматически обновить ваш build script и начать запаковывать их по-новому с помощью новой конструкции «module», специально ничего делать не нужно — миграция произойдет автоматически.
Прочие улучшения
NodePointer для дочерних элементов
Выражение nodePointer из lang.smodel теперь способно ссылаться не только на корневые узлы, но и на любые именованные элементы.
Учет зависимостей моделей при сборке
При генерации модели также выполняется сборка всех ее зависимостей, нуждающихся в перегенерации. Это экономит время и позволяет избежать неприятных сюрпризов.
Улучшение клонирования модели
Действие Clone Model корректно обновляет для элементов клонированной модели перекрестные ссылки между разными корнями. Теперь клонированная модель полностью независима от исходной.
На этом всё. Надеемся, вас порадуют все новинки релиза. Мы всегда прислушиваемся к вашему мнению. Присоединяйтесь к нам в Twitter и подключайтесь к нашему каналу slack, чтобы первыми узнавать об обновлениях и делиться вашими отзывами!
Удачи!
Ваша команда JetBrains MPS
The Drive to Develop
alhimik45
То ли новость запоздала, то ли в 2018м обновлений не будет.
А вообще, очень крутую штуку делаете! Правда я когда интересовался темой, так и не смог осилить ни MPS, ни альтернативу XText...(
Dreyk
судя по тому что версия 2017.3, то первое