А вдруг кто-то может подсказать, насколько реально, например, иметь Zero в качестве интерпретатора и вместо Shark прикрутить к нему C1/C2 или J9(предположим, они спортированы) вместо стандартного(?) в этом случае Shark? Если я правильно понимаю, то принципиально интерфейсы jit'ов к рантайму не то, чтобы сильно различаются, но это я еще буду внимательнее смотреть
Грааль же вроде детище оракл лабс, если не путаю. И говорят что в оракл лабс пользуются для чего то формальной верификацией. Может что-то слышали и можете рассказать для чего именно?
Проход по графу промежуточного представления после каждой оптимизации - формально является верификацией. Но это построенная SSA гарантирует, а вот то что обращения в память не поменялись для конкретного бенча - это как-нибудь проверяется?
Граф он у конкретной программы, его обход фактически вычисление.
То как мы можем изменить граф в другой, задается набором каких-то операций (например deforestation в хацкелле). Они не зависят от конкретной программы и могут быть применены в каждой (потенциально). Поэтому хорошо бы доказать, что эти правила не меняют результата. Вот их к примеру и можно описывать формально и доказывать (на бумажке или пруверами).