使用旧的 Rust 2015
0.0.1 |
|
---|
#15 在 #rts
13KB
175 代码行
ghc-rts-rs
这是用于将 GHC RTS 静态链接到代码中的代码,以便在 Rust 中运行 Haskell。它打算作为 curryrs 包的一部分使用,作为依赖项。然而,其功能正在被分离出来,作为其他人可以独立使用的基库。您可以选择使用哪个版本的 GHC,这里的修改过的源文件将编译出具有正确版本和开启 DWARF 符号的优化构建。
它还提供了对 hs_init
和 hs_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 版本,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
许可协议
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交的工作,应按上述方式双重许可,不附加任何其他条款或条件。
依赖项
~0–1MB