Новости релизов Scala Программирование на Scala
Всем привет!
Плагин Scala 2026.3 уже здесь! Этот релиз приносит более точный анализ кода Scala 3, существенно переработанную поддержку Twirl для разработчиков на Play Framework, а также более эффективную подсветку на основе компилятора, которая сокращает избыточную фоновую работу. Вы также найдете улучшения в поддержке систем сборки, отладке и повседневном редактировании. Давайте поближе познакомимся с новинками.
Scala 3
В этот релиз добавлена поддержка Scala 3.10 и улучшен встроенный анализ кода Scala 3, что снижает количество ложных ошибок и повышает точность выведения типов.
Методы-расширения теперь разрешаются точнее, когда перегрузки включают разные или обобщенные типы получателей, параметры типов методов или неявные преобразования. Мы также исправили разрешение правоассоциативных операторов-расширений. Автодополнение кода, навигация и быстрая документация более четко различают методы-расширения с разными типами получателей, а в списке автодополнения кода стало меньше дублирующихся записей.
Разрешение контекстных аргументов теперь более эффективно использует аргументы методов и явные аргументы типов при выборе экземпляров given. Это позволяет избежать ложной неоднозначности и ошибок отсутствия неявных параметров в обобщенном коде, включая вызовы, где списки параметров типов и значений чередуются.
Выведение типов теперь точнее обрабатывает прозрачные трейты, избегая излишне ограничивающих типов коллекций. Мы также улучшили выведение для высокоуровневых параметров типов и их границ. Для анонимных классов мы исправили случаи, когда плагин выводил структурные типы, которые компилятор не выводит.
Улучшенная поддержка Twirl для Play Framework
Мы существенно переработали поддержку шаблонов Twirl для Play Framework, начав с полной архитектурной переработки. За ней последовал масштабный комплекс улучшений синтаксического анализа, автодополнения кода, форматирования, поиска использований (Find Usages) и разрешения ссылок. В совокупности эти обновления значительно сокращают количество ложных ошибок, делая редактирование, навигацию и рефакторинг шаблонов более надежными.
Функция «Найти использования» теперь надежно определяет код Scala, который рендерит конкретный шаблон, до того как вы его измените. Переименование шаблона автоматически обновляет ссылки на него по всему проекту, сохраняя согласованность мест вызовов при реорганизации вашего приложения Play.
Переработка также снижает количество ложных ошибок во встраиваемых HTML, CSS, JavaScript и JSON. В сочетании с улучшениями форматирования и автодополнения работать с шаблонами на смешанных языках теперь гораздо проще — меньше вводящих в заблуждение диагностических сообщений прерывают вашу работу.
Улучшения систем сборки: sbt, Scala CLI и BSP
В плагине Scala 2024.3 мы представили раздельные модули main и test, чтобы лучше отражать структуру проекта sbt. В версии 2026.3 это единственная поддерживаемая структура, а опция ее отключения была удалена. Такая структура поддерживает более точную обработку зависимостей и различные параметры компилятора для основных и тестовых исходных кодов.
Импорт проектов sbt 2.x также улучшился, особенно в отношении разрешения путей плагинов компилятора. Кроме того, анализ скриптов сборки теперь корректно обрабатывает выражения .value и /, предотвращая ситуации, когда допустимые настройки отмечаются в редакторе как неразрешенные ошибки.
Что касается производительности, мы устранили проблему медленного импорта проектов в Scala 3.8, а также регрессию производительности импорта BSP.
При изменении реализации макроса Scala 3 сборки IDE теперь автоматически перекомпилируют зависящий от него код при необходимости. Это гарантирует, что скомпилированный код больше не сохраняет устаревшие расширения макросов после изменения их реализации.
Автодополнение координат зависимостей возвращено как для определений сборки sbt, так и для директив Scala CLI //> using dep. При добавлении библиотеки подсказки автодополнения кода помогают быстро найти правильные координаты и вставить их в вашу сборку или скрипт.
Наконец, скрипты Scala CLI теперь получили улучшенный синтаксический анализ шебанга (shebang), подсветку и форматирование. Инспекция обнаруживает отсутствие прав на выполнение в локальных скриптах с шебангом в первой строке и предлагает быстрое исправление, чтобы сделать их исполняемыми, что позволяет решить проблему до непосредственного запуска скрипта.
Улучшения отладки
Теперь вы можете ставить точки останова на однострочных условных операторах return в обычных методах, таких как if (done) return result, и останавливаться на этих операторах во время отладки. Мы также исправили проблемы, из-за которых точки останова пропускались внутри обратных вызовов Future и в выражениях for, определенных в методах верхнего уровня Scala 3.
Инспектирование состояния в приостановленной программе также стало значительно плавнее. Мы устранили зависания интерфейса во время автодополнения выражений и вычисления выражений наблюдения (watches), исправили проблему, когда развертывание объектов застревало на сборе данных (Collecting data), а также исправили проблемы с действием инициализации для объявлений lazy val.
Более эффективная подсветка на основе компилятора
Подсветка на основе компилятора теперь позволяет избежать ненужных перекомпиляций за счет повторного использования валидной диагностики, даже для файлов, закрытых во время компиляции. Переключение вкладок или повторное открытие уже проверенного файла отображает сохраненные результаты. Кроме того, ввод текста вызывает меньше фоновой работы, а отложенные проверки в нескольких файлах теперь объединяются в один запуск компиляции.
Переключение между файлами в модуле с ошибками больше не вызывает повторных попыток компиляции, пока проект остается неизменным. Кроме того, если ошибки в другом модуле блокируют подсветку, редактор объясняет причину и предоставляет ссылку на блокирующие ошибки.
Наконец, мы устранили несколько краевых случаев. Многомодульные компиляции BSP больше не пропускают все цели неожиданно, диагностика больше не смещается на неверные строки при правках во время компиляции, а ошибки подсветки больше не остаются скрытыми в случае отмены компиляции.
Небольшие улучшения в редакторе
Для быстрого просмотра выводимой информации режим X-Ray теперь отображает выведенные аргументы типов для методов без параметров.
Перейдите в «Код» | «Десахаризовать код Scala» (Go to Code | Desugar Scala Code), чтобы изучить код Scala с явно развернутыми неявными и синтаксическими деталями. Для скомпилированных классов Scala 3 новое представление рядом (side-by-side) позволяет сравнить интерпретацию компилятора с интерпретацией плагина. Это особенно полезно при исследовании кода, который сильно зависит от неявных аргументов или сложных языковых конструкций, чьи развернутые формы трудно распознать только по исходному коду.
Мы также исправили ключевые проблемы форматирования. Мы исправили ошибку, из-за которой форматирование валидных лямбда-функций Scala 3, возвращающих кортежи в синтаксисе с отступами, приводило к некомпилируемому коду. Мы обновили интеграцию со Scalafmt и исправили форматирование диапазонов для частичных выделений и пустых тел case-ветвей.
Изменения совместимости и удаления
Пожалуйста, ознакомьтесь с этими изменениями перед обновлением существующей настройки:
- Ammonite: Мы удалили выделенную поддержку скриптов, включая конфигурации запуска Ammonite и поддержку $file/$ivy. Вы по-прежнему можете запускать скрипты Ammonite внешним образом.
- Fastpass: Интеграция с Fastpass больше недоступна для импорта проектов.
- Структура модулей sbt: Проекты теперь используют раздельные модули main и test, даже если ранее этот режим был отключен. Настройка для отключения раздельных модулей была удалена.
- IntelliJ Scala Bundle: Экспериментальный автономный дистрибутив упразднен. Пожалуйста, устанавливайте IntelliJ IDEA и плагин Scala отдельно.
Для разработчиков плагинов
Сам плагин Scala теперь написан на Scala 3. Эта внутренняя миграция не требует никаких изменений в проектах, которые вы открываете в IntelliJ IDEA. Вы можете продолжать использовать их существующие версии Scala и конфигурации сборки.
Если вы разрабатываете плагин для IntelliJ IDEA, который компилируется против API плагина Scala, пересоберите его для целевой сборки плагина Scala 2026.3 и проверьте совместимость с обновленными сигнатурами API и поставляемыми зависимостями. В руководстве по совместимости API и зависимостей приведены инструкции по миграции.
IntelliJ IDEA 2026.3 также приносит новые функции, улучшения производительности и обновления удобства использования. Ознакомьтесь с этими изменениями в наших публикациях «Что нового» и «Исправления ошибок».
Как всегда, мы приветствуем ваши отзывы! Пожалуйста, сообщайте о любых обнаруженных проблемах на YouTrack, а также не стесняйтесь задавать вопросы или делиться своими мыслями на Discord.
Приятной разработки!
Команда Scala в JetBrains











