使用Template Haskell添加要链接的库

Ale*_*lec 11 haskell ffi ghc template-haskell

我目前正试图通过在Haskell中编写Rust代码内联的quasiquotes进行攻击.我认为我已经完成了代码生成工作(包括将生成的Rust之类的Haskell类型封送起来).我现在有一个问题,即从模板Haskell中找出如何进行所有编译和链接.管道如下:

  1. quasiquote得到解析
  2. 生成源代码
    • 相应的Rust函数
    • Haskell FFI进口
    • Haskell调用导入的函数
  3. Rust代码被编译成静态库(如rustc --crate-type=staticlib qq_function.rs -o qq_function.a)
  4. Haskell的代码被编译并链接qq_function.a(以及其它类似的图书馆屈指可数m,c等等)

我的问题是让步骤3和4完全发生TemplateHaskell.据我所知,这是:

  • runIO 可以写出我生成的Rust源文件
  • addDependentFile 通知GHC生成的Rust文件是依赖项
  • addForeignFile遗憾的是并没有以来锈是不支持的语言自动管理的编制工作(这是该方法inline-c需要因为C语言一个支持的语言)
  • runIO可以通过调用来生成静态Rust库(并在之后删除Rust源文件)rustc.

我还不太清楚的是

  1. 我如何使用Template Haskell添加链接的库和
  2. 我怎样才能使用Template Haskell来清理这些生成的库?

编辑

我已经提交了与此相关的GHC功能请求.