2017-01-28 1 views
4

Я изучаю Часовню с небольшими программами, и они отлично работают. Но по мере того как программа становится длиннее, время компиляции также увеличивается. Поэтому я искал способ скомпилировать несколько файлов один за другим, но не с успехом. При поиске в Интернете, я нашел this и this страниц, а второй говоритИнкрементальная компиляция в Часовне

Все эти дополнительные возможности и компиляции включены с новым --incremental флагом в Чапел компилятор, который будет доступен в капелле 1.14 .0 выпуск.

Хотя Chapel компилятор на моем компьютере принимает этот вариант, он, кажется, не порождают каких-либо * .o (или * .a?) При компиляции файла, содержащего только процедуру (т.е. не основной()). Это потому, что вышеупомянутый проект является экспериментальным ...? В таком случае мы можем ожидать, что эта функция будет включена в какую-то будущую версию Часовни?

(Или слово «инкрементальный сборник» выше, не то, что я ожидал для обычных компиляторов как GCC?)

Моей среды: Chapel-1.14.0, установленный с помощью доморощенного на Mac OSX 10.11.6.

ответ

3

Реализация Chapel только полностью компилирует код, который используется при выполнении основной() процедуры. В качестве начального набега проект инкрементной компиляции пытался минимизировать исполняемую разницу между кодом, скомпилированным с помощью обычной компиляции, и кодом, скомпилированным с флагом -incremental. Это должно было гарантировать, что пользователь не столкнется с другим набором ошибок при разработке в одном режиме, чем в другом. Как следствие, файл, содержащий только процедуру, не будет скомпилирован до попытки компиляции при использовании этого файла/процедуры.

Проект, с которым вы обращались, был отличным первым стартом, но выявил многие соображения для команды, которую мы ранее не рассматривали (в том числе тот, который вы подняли). Мы все еще обсуждаем будущее направление этой функции, поэтому не совсем понятно, что это повлечет за собой. Одним из возможных расширений является «отдельная компиляция», где код может быть скомпилирован в .o или .a, который может быть связан с другими программами. Опять же, это все еще обсуждается.

Если у вас есть мысли о том, как эта функция должна развиваться, мы будем рады услышать их через проблему на our Github page или через наших разработчиков или пользователей mailing lists.

Смежные вопросы