基于 LLVM 的编译器语言
我正在考虑使用玩具语言进行一些初步测试和实验,并构建基于 LLVM 的编译器以获得一些可基准测试的结果。
我意识到 C++ 是 LLVM 的“原生”且支持最好的语言,但我真的不想使用 C 或 C++。因此,我正在寻找一种更高级的语言,它可以为使用 LLVM API 提供稳定且成熟的支持。
我最初使用 Python LLVM 库 的工作有点令人失望,因为该项目似乎已被放弃,虽然我听到有关 PyPy 将 LLVM 支持集成到其框架中的有希望的消息,但在将大量时间投入到任何给定路线之前,我想知道人们的经验是什么。
所以我的问题是,你们中有人有过使用高级语言和/或框架使用 LLVM 的积极经验吗?如果是的话,是哪一个?或者您有什么要避免的吗?
I'm looking at doing some initial tests and experiments with a toy language and building an LLVM-based compiler to get some benchmarkable results.
I realize that C++ is LLVM's "native" and best-supported language, but I really don't want to use C or C++. So I'm looking for a higher-level language that has stable and established support for working with the LLVM API.
My initial work with the Python LLVM library was a bit of a disappointment as the project seems to have been abandoned, though I hear promising news about PyPy integrating LLVM support into their framework, but I'd like to know what people's experience is before sinking a lot of time into any given route.
So my question is, have any of you had a positive experience working with LLVM using a higher-level language and/or framework? And if so, which? Or are there any that you would say to avoid?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
LLVM API 的一个子集通过普通 C 包装器公开。它足以生成代码,并且几乎可以在任何高级语言中使用。有现成可用的 OCaml 绑定(请参阅本教程),以及 Haskell 绑定也相当成熟(例如,GHC 本身可以通过 LLVM 编译)。我也使用过基于 .NET 的语言中的 LLVM,没有任何绑定(只是从标头自动生成的
P/Invoke
包装器)。A subset of LLVM API is exposed via plain C wrappers. It is sufficient for code generation, and can be used from practically any high level language. There are OCaml bindings available out of the box (see this tutorial), and the Haskell bindings are quite mature as well (e.g., GHC itself can compile via LLVM). I've used LLVM from .NET-based languages too, without any bindings (just
P/Invoke
wrappers auto-generated from the headers).