取决于“官方批准”的含义。plugins(以前称为hs-plugins)被设计为一个包罗万象的解决方案,具有代码生成和动态加载功能。它并不以最小化为目标。
一个不太复杂的包名为direct-plugins,它专注于插件的动态加载。该包读取Haskell接口(.hi)文件来获取符号的实际类型,因此类型安全是可能的,但也提供了不安全的变体。不幸的direct-plugins是,它已经烂了,并且不能与 GHC v7.6 一起工作(atm)。
在该范围的最低端,有一个unix包提供了类似dlopen/dlsym的机制来获取从共享库导出的符号。还提供了一个便利层,可以在处理终止后自动关闭打开的库。然而,这些符号是作为 FFI 获得的Ptr,并且不可由 Haskell 调用。
通过搜索互联网,我发现了一个废弃的软件包,它似乎在中间位置运行:
原始包由 Hampus Ram 编写。我只是为最新发布的 GHC 做了准备,并做了一些非常浅层的测试。这是存储库:
唯一缺少的部分是类型安全的符号访问(通过可能的可配置机制)。欢迎评论和补丁。