No ORCJIT support for Go Bindings

Most questions about this topic have been abandoned like this one.

2 years ago, it was discussed here that LLVM binding support for Golang will be removed and externally maintained outside of the main tree by @aykevl.

The bindings are still out of date and still do not support modern features like ORCJIT.

I request the LLVM team to please maintain up-to-date official golang bindings for the community.

A large number of people who want to build open-source large-scale projects with the LLVM + Go stack hesitate to use unofficial implementations like the one from llir/llvm.

I kindly request the entire project to please kindly maintain Golang bindings for such a large part of their potential community as this is hindering a significantly large portion of developers to easily become a part of the overall LLVM project.

The tinygo LLVM bindings are still actively maintained (supporting up to LLVM 19). If the bindings are missing some functionality that you are interested in, I would suggest submitting a pull request with the missing functionality.

If someone wishes to upstream Go binding to the main LLVM project, we can certainly consider that, but I personally doubt that this is going to happen. Maintaining these bindings out-of-tree has benefits, in particular the ability to support multiple LLVM versions with a consistent API.

1 Like

Indeed, I agree with @nikic here. The bindings are reasonably up to date, we might lag a bit after a LLVM release but will eventually catch up. I’ve actually found it much easier to maintain these bindings out of tree so unless something changes this will likely continue to be the case.

If you want new features, you are free to contribute them yourself. For the TinyGo project I’ve added features on an as-needed basis, but we’re open to PRs.

2 Likes

Got you. I will try to do a submit a pull request after my exams.