https://forum.hiasm.com/post/312229
Начал ковырять глубже и экспериментировать.
Наткнулся на такую статью-опровержение:
https://erikmcclure.com/blog/a-rant-on-terra/
Честно говоря автор лукавит и не разобрался с ключами для своей ручной сборки.
Дело в том, что интерфейс Clang меняется от версии к версии LLVM и есть уже готовые бинарные сборки. Мало того, есть бинарные сборки с опционально подключаемым Jit и FFI. (о Jit компиляции будет сказано отдельно.) https://luapower.com/terra2
Для справки https://luajit.org/ так как темы плотно соприкасаются.
(Всё это легко интегрируется в HiAsm.)
Теперь самое главное:
Темой кроссплатформенной компиляции и мультиязычности приложений я занимаюсь давно с переменным успехом. Не буду рассказывать что и как делал, на чём делал и что получилось, а что ещё в процессе.
В силу специфики моих увлечений (процедурная генерация сюжетов, текстовых рассказов и 2D\3D игрушек по ним в реальном времени), мне нужна была компиляция, как в исполняемые файлы, так и в веб приложения одной и той-же программы. Получилось что то типа этого https://defold.com/ (Если интересно, то могу описать, как я тыркаля в JS и как языки встраивал в него- можно! - негодный язык! Какое недоразумение electron, app и другие этого плана - сплошной обман. Т.е. работает, но всё бутафория). Сейчас поветрие такое...
Сделал иначе.
Конечно получилось не тоже самое, а то что мне нужно было. Это в качестве примера чтоб понять принцип. (если читать только заголовок сайта, то ничего понятно не будет.)
Теперь про Hiasm.
"Ближе к телу!", как говорил Гидя Мопассан.
Что нужно?
Нужно тоже самое:
1. Одна и та-же схема должна компилироваться на разные платформы включая веб приложения.
2. Включение скриптовых языков (здесь проблем нет и быть не может).
3. IC должен поддерживать не только скриптовые языки, но и компилируемые.
Как же это сделать?
(
Занимаясь своей задачей, пришлось изучить LLVM.
Не буду описывать что это такое, просто приведу несколько ссылок.
https://habr.com/ru/company/huawei/blog/511854/
https://llvm.org/
https://academy.hpc-russia.ru/files/msu-llvm-lecture.pdf
То есть это инструмент для написания компиляторов. (
Важно то, что там есть уже готовые компиляторы(утилиты для фронтенд и бэкенд компиляции ) практически под все языки включая Delphi и FPC, как например clang для C++. https://ru.wikipedia.org/wiki/LLVM
И важно то, что LLVM спроектирован так, чтобы эту технологию можно было легко внедрить в уже готовые проекты и IDE!
Как это работает?
Скрипт написанный на каком либо языке транслируется в промежуточный байт-код(Jit компиляция)- фронтенд.
Этот код одинаков для любого языка и "понятен" для любой платформы.
Потом из этого байт-кода можно собрать исполняемый бинарник для какой либо платформы - бэкенд (всё имеется в наличии).
Кубики можно и желательно делать на языке LLVM IR.
Чтобы не париться, для этого есть утилиты переводящие скрипт исходного языка в язык LLVM IR. То есть можно переводить как в байт код, так и в специализированный язык.
Для IC, например на C++, применяем утилиту clang.
В нюансы я специально не вдаюсь, чтобы не загромождать мысль.
Главное есть понимание как это делается и проводил опыты с Hiasm в плане Jit компиляции IC в память и исполнении этого кода.
Конечно сборку Hiasm надо будет переписывать...
И вообще дело не на пол года.
Боюсь, что сам этим не буду заниматься в силу того, что старый стал - сегодня день рождения, и жалко тратить последние годы жизни не доведя до ума тему процедурного написания рассказов и сценариев(сюжетов). - а это на всю оставшуюся жизнь. Но помогу и приму участие если что!
Пойду возьму бутылку чтоля.