#haskell #rts #ffi

已删除 ghc-rts-rs

将 Haskell 运行时链接到 Rust 中运行

使用旧的 Rust 2015

0.0.1 2018年1月25日

#15#rts

MIT/Apache

13KB
175 代码行

ghc-rts-rs

这是用于将 GHC RTS 静态链接到代码中的代码,以便在 Rust 中运行 Haskell。它打算作为 curryrs 包的一部分使用,作为依赖项。然而,其功能正在被分离出来,作为其他人可以独立使用的基库。您可以选择使用哪个版本的 GHC,这里的修改过的源文件将编译出具有正确版本和开启 DWARF 符号的优化构建。

它还提供了对 hs_iniths_exit 函数的包装,以便您可以从您的代码中轻松地启动和停止运行时。

除了这个功能之外,库不进行其他操作,以使 FFI 更易于使用或简化。如果您正在寻找一个更高级的库来简化 Rust/Haskell FFI,请查看 curryrs

构建时间

不幸的是,构建过程耗时非常长。强烈建议不要经常更改 Rust 的新版本,意味着如果可能的话使用稳定版,因为稳定版每 6 周才更新一次。一旦编译完成,除非您的 Rust 或 GHC 编译器更改,否则不需要再次触碰它。

启动/停止运行时

extern crate ghc_rts;
use ghc_rts::{start, stop};

fn main() {
  start(); // Starts the Haskell Runtime. Can be called more than once
  stop();  // Stops the Runtime. Will panic if called more than once as the RTS
           // can't be started again now, nor stopped.
}

依赖项

您需要安装以下工具才能编译 RTS

  • libnuma - 可能需要。在我的 Linux 机器上需要它。仍在努力解决这个问题!
  • cabal
  • ghc
  • 构建 GHC 所需的工具

您可能需要使用静态版本才能工作。例如,我需要在 Arch Linux 上使用 ghc-static 软件包。尝试一下,弄清楚它!

贡献

有关更多信息,请参阅 CONTRIBUTING.md

许可协议

根据您选择,许可协议为以下之一

许可协议

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的工作,应按上述方式双重许可,不附加任何其他条款或条件。

依赖项

~0–1MB