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