Я хочу начать работу над небольшим компилятором и построить его. Я колеблюсь между несколькими языками.
Мои требования просты, я хочу, чтобы иметь возможность генерировать код LLVM-IR, потому что у меня есть LLVM-бэкэнд, который я бы хотел использовать для целевой платформы.
Итак, сейчас у меня есть следующие варианты:
-
Использовать привязки OCaml и LLVM. Эффективный LLVM поставляется с привязками OCaml, но опыт кодирования с OCaml (IDE, поддержка) не самый лучший.
-
Используйте C/С++ и привязки LLVM. Самый очевидный способ, который я бы сказал, но я хотел бы использовать функциональный язык, поскольку этот вопрос для меня новый, и я хочу узнать что-то новое.
-
Используйте F # - я был влюблен в этот язык, но никаких официальных привязок LLVM нет. Поэтому, я думаю, я мог бы сделать то же самое, используя System.Reflection.Emit. Хотя кажется, что здесь есть инициатива для привязки F # для LLVM - https://github.com/keithshep/llvm-fs
Я бы с удовольствием подумал об этом.