Для многопользовательской игры для программирования я работаю на сервере компиляции фона для Scala, который поддерживает компиляцию нескольких независимых исходных деревьев, представленных игроками. Мне удалось выполнить быстрые последовательные компиляции без перезагрузки компилятора путем создания экземпляра объекта Global
компилятора с помощью
val compilerGlobal = new Global(settings, reporter)
а затем выполнить отдельные задания компиляции с помощью
val run = new compilerGlobal.Run
run.compile(sourceFilePathList)
Теперь я бы идеально хотел распараллеливать сервер (т.е. выполнять несколько компиляций одновременно), но все равно без перезагрузки компилятора (прежде всего, чтобы избежать повторного разбора lib) с нуля каждый раз. Возможно ли это, т.е. Вторая часть, показанная выше (безопасно:-) повторный участник или глобальное состояние? Если нет, есть ли что-то еще, что я могу попробовать? В настоящее время я сосредоточен на поддержке Scala 2.9.1.