Go LLVM bindings choice for language development

I am working on a language, Vitality, and wanted to use Go to write my compiler while using LLVM as the compiler backend / pipeline.

I faced a few problems:

  • No officially maintained LLVM x Go Bindings
  • No security audits of relatively easy-to-use options like llir/llvm
  • Implementations that are easier to navigate around like tinygo-org/go-llvm are maintained by a single person.

I will be using my language to write and deploy applications in very sensitive areas like high-frequency financial infrastructure etc.

So for me security is a higher priority than better developer experience but I would prefer either of them.

Can I get suggestions on the following:

  • Is there any close affiliation of the official LLVM Project with the implementation of llir/llvm for me to be comfortable in using that option?
  • Should I just use tinygo-org/go-llvm since it is atleast maintained + it’s source code is much more auditable.
  • Something else that you guys think might be even better?

@aykevl

Sorry I know I have already pinged you on other socials for this but I just wanted you to know the entire query in detail here.

See my answer here: No ORCJIT support for Go Bindings

If you want to audit these bindings, you are free to do so. I suggest you look at the code yourself and decide whether you want to use it.

Auditing your implementations are easier as they are very straightforward unlike ones like llir/llvm which are more up-to-date as of now but much more complicated to audit because they leverage the power of Golang’s type system.

I will submit my PR’s and get a few things up-to-date once my final exams are over, thanks.