Тема: Стадии/режимы script, mount и make, подрежим check
Пока непонятно, относится эта тема к компилятору Кантора или к платформе Кантора в целом.
Из-за основанности на обратимом коде любая компиляция на Канторе является как минимум двухстадийной (кодогенерация станет третьей стадией) и представляет собой процесс обмена кодом с ядром Кантора:
На стадии script исходный текст разбирается и превращается в объектный код, затем складывается в БД кода. Поскольку БД кода первична, любой исходный текст считается скриптом, пополняющим или изменяющим БД.
На стадии make ядро получает целевую точку (и стратегию сборки?), под которую выбирает из БД весь зависимый код, выполняет над ним тождественные преобразования (частичные вычисления?), оптимизации и прочие действия, чтобы получить результат, пригодный к подаче на вход кодогенератора. Затем ядро мини-Кантора запускает внешний кодогенератор, а в будущем Кантор будет использовать свой собственный.
В целом стадии независимы друг от друга. Например, после script может выполняться отекстовка полученного объектного кода, или же компилятору может передаваться сразу точка сборки, а весь код браться целиком из БД. При наличии непрерывно работающего ядра Кантора с оперативной (online) БД стадии становятся режимами и могут работать параллельно, контроль целостности и согласованность кода берет на себя ядро.
Непрерывная работа ядра вводит еще один режим — mount, в котором объектный код монтируется из двоичных файлов хранилища с выполнением лишь общих проверок целостности. Это будет быстрее script, но требует разработки двоичного (сериализованного) хранилища БД кода и соответствующей обвязки в ядре. Двоичные и текстовые исходники взаимозаменяемы. Встретив текстовый исходник, mount будет запускать script.