company_banner

Вышел MPS 2017.3

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

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

    Загрузить MPS 2017.3

    Расскажем подробнее о нововведениях.

    Редактор


    Универсальные заполнители


    Мы ввели понятие универсального заполнителя (generic placeholder). Универсальные заполнители могут использоваться для обозначения пустых позиций в любой коллекции на любом языке, а еще в них может находиться некоторое полезное содержимое. По умолчанию узел-заполнитель выглядит в редакторе как пустое место, а его поведение прозрачно — находясь в нём, можно вызвать автодополнение, чтобы заменить заполнитель на какой-то элемент языка, который может в этом месте находиться. Либо можно нажать клавишу Enter и добавить новый элемент в следующую позицию этой коллекции. Универсальный заполнитель вставляется сочетанием клавиш Control/Cmd + Shift + Enter.

    image

    Плавающие комментарии


    Появление универсальных заполнителей позволило реализовать универсальное комментирование в предметно-ориентированных языках (DSL). Чтобы воспользоваться этой возможностью, достаточно импортировать язык jetbrains.mps.lang.text или devkit общего назначения. В результате вы получите язык свободно редактируемых многострочных комментариев с гиперссылками, с возможностью настройки шрифта (жирный, курсив, подчеркивание), внутрь которых еще и можно вставлять код. Для ввода комментария просто переведите курсор на универсальный заполнитель, нажмите «[» и начните печатать.

    Если стандартного языка комментариев недостаточно, можно создать свой собственный с дополнительными возможностями.

    image

    Настройка гарнитуры шрифта для ячеек


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

    image

    Выбрать все


    Новое действие SELECT_ALL позволяет выбрать все содержимое редактора целиком. Оно вызывается сочетанием клавиш Control/Cmd + A, а его поведение можно настроить в соответствии со своими предпочтениями при помощи карт действий.

    image

    Undo для удаленных узлов


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

    Генератор


    Связывание моделей контрольных точек


    Контрольные точки теперь поддерживают прохождение по ссылкам, помеченным с помощью mapping label, не требуя одновременной генерации ссылки и того, на что она ссылается. Теперь можно спокойно делать resolve ссылки, даже если узел, на который она ссылается, был сгенерирован в более ранней контрольной точке.

    Устранение избыточной перезаписи файлов


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

    Язык компоновки


    Новый способ копирования ресурсов модуля


    Корневой узел содержимого «resources», указываемый в модулях, теперь используется для копирования ресурсов в развертываемый модуль. Для переноса в шаблоны копирования ресурсов тех файлов масок, которые раньше были жестко зашиты в коде, предусмотрена специальная миграция.

    image

    Задачи Ant


    Задача Ant MPS предоставляет полный контроль над содержимым репозитория с помощью нескольких новых тегов: module, modules и allmpsmodules.

    image

    Улучшения задачи Ant для миграции


    У задачи Ant для миграции теперь более удобный интерфейс.
    При возникновении проблем в ходе миграции скрипт Ant прекращает работу и корректно сообщает об ошибках.

    Поддерживаются все старые атрибуты для указания расположения mps — переменные окружения mps.home и mps_home, а также атрибут у самой задачи mpshome. Тем не менее, отныне желательно использовать свойство окружения mps.home.

    Улучшения упаковки пакета разработки


    Модули типа devkit, представляющие собой подборки языков и библиотек для конкретных нужд пользователя, теперь содержатся в дистрибутиве не в виде отдельных файлов, а упаковываются в файлы jar так же, как остальные модули. Чтобы автоматически обновить ваш build script и начать запаковывать их по-новому с помощью новой конструкции «module», специально ничего делать не нужно — миграция произойдет автоматически.

    Прочие улучшения


    NodePointer для дочерних элементов


    Выражение nodePointer из lang.smodel теперь способно ссылаться не только на корневые узлы, но и на любые именованные элементы.

    image

    Учет зависимостей моделей при сборке


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

    Улучшение клонирования модели


    Действие Clone Model корректно обновляет для элементов клонированной модели перекрестные ссылки между разными корнями. Теперь клонированная модель полностью независима от исходной.

    image

    На этом всё. Надеемся, вас порадуют все новинки релиза. Мы всегда прислушиваемся к вашему мнению. Присоединяйтесь к нам в Twitter и подключайтесь к нашему каналу slack, чтобы первыми узнавать об обновлениях и делиться вашими отзывами!

    Удачи!

    Ваша команда JetBrains MPS

    The Drive to Develop
    JetBrains 128,90
    Делаем эффективные инструменты для разработчиков
    Поделиться публикацией
    Комментарии 2
    • 0
      Это последний выпуск MPS в текущем году.

      То ли новость запоздала, то ли в 2018м обновлений не будет.


      А вообще, очень крутую штуку делаете! Правда я когда интересовался темой, так и не смог осилить ни MPS, ни альтернативу XText...(

      • 0
        судя по тому что версия 2017.3, то первое

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое