Slide 1

Slide 1 text

Новый подход к компиляции Scala в IntelliJ IDEA Павел Фатин mail@pavelfatin.com

Slide 2

Slide 2 text

Scalac + Enter?

Slide 3

Slide 3 text

Компиляция в IDE ● Интеграция с GUI ● Инкрементальная компиляция ● Сервер компиляции

Slide 4

Slide 4 text

Интеграция с GUI ● Трансляция сообщений ● Индикация прогресса ● Прерывание компиляции

Slide 5

Slide 5 text

Инкрементальная компиляция ● Время модификации файлов ● Отображение исходников на классы ● Открытый интерфейс классов ● Анализ зависимостей ● Интеграция с другими компиляторами

Slide 6

Slide 6 text

Сервер компиляции ● Управление процессом JVM ● Протокол взаимодействия

Slide 7

Slide 7 text

Обновления

Slide 8

Slide 8 text

Новая подсистема компиляции ● Сборка в отдельном процессе ● SBT для инкрементальной компиляции ● Замена сервера компиляции

Slide 9

Slide 9 text

Сборка в отдельном процессе ● Снижение потребления памяти IDEA ● Уменьшение нагрузки на GC ● Разгрузка PSI и VFS в IDEA ● Ускорение компиляции ● Сборка из командной строки

Slide 10

Slide 10 text

Улучшение инкрементальной компиляции

Slide 11

Slide 11 text

Пример 1: Sealed class T.scala Main.scala

Slide 12

Slide 12 text

Пример 1*: Sealed class T.scala* Main.scala ? ...

Slide 13

Slide 13 text

Foo.scala foo bar Пример 2: Named parameters Foo.scala Main.scala

Slide 14

Slide 14 text

Foo.scala Пример 2*: Named parameters foo bar Foo.scala* Main.scala

Slide 15

Slide 15 text

foo Пример 3: Implicit conversion Foo.scala Main.scala

Slide 16

Slide 16 text

Пример 3*: Implicit conversion foo Main.scala Foo.scala*

Slide 17

Slide 17 text

SBT компилятор ● Scala-специфичный анализ кода ● Запуск компилятора внутри процесса ● Совмещение различных версий Scala ● Простая передача аргументов и сообщений

Slide 18

Slide 18 text

Новый сервер компиляции ● Решение проблем с FSC ● Общий сервер для всех проектов ● Упрощение конфигурации

Slide 19

Slide 19 text

Результаты ● Снижение нагрузки на процесс IDEA ● Возможность сборки из командной строки ● Улучшенная инкрементальная компиляция ● Запуск Scalac и Javac внутри процесса ● Общий сервер компиляции ● Упрощение конфигурации проекта

Slide 20

Slide 20 text

Спасибо!