Turbo Haskell:让 Haskell 在 JVM 上飞驰
我在一周前开玩笑般开始了 THC(Turbo Haskell Compiler)的开发,如今它已能运行 GHC 9.14.1 的所有 prim-ops,并通过 Truffle 和 GraalVM 在 JVM 上执行 Haskell 代码。THC 支持 JIT 和 AOT 编译,兼容 Template Haskell、Linear Haskell 等高级特性,甚至能编译 GHC 自身。它提供多语言 FFI,可无缝调用 Python、Ruby、R 和 JavaScript 库,实现零拷贝字符串转换。在并发模型上,THC 支持 Java 线程和 Project Loom,提供轻量级绿色线程。针对尾递归优化,THC 采用代码变换技术将热尾调用转为紧循环,显著提升性能。虽然目前性能略逊于 GHC,但潜力巨大。项目代码已开源,欢迎加入社区共同探索。
当执行必须回退到普通调用时,THC 会定期展开累积的栈帧,而热尾调用则直接变成高效的循环。