对于我的PHP LLVM后端,我想试用OCaml GC。是否可以将它与LLVM一起使用?特别是:
答案 0 :(得分:2)
虽然看起来将OCaml GC和Frankenstein撕成一个不同的项目似乎相对容易,但我不确定这是否是你想要在实践中做的事情。
OCaml垃圾收集器考虑到了designed with a functional programming style,这种GC架构可能是PHP等语言的一种责任,它通常在功能样式中使用 。
如果您准备这样做,那么我建议要么等待几个月才能将多核支持接受到OCaml编译器/运行时,或者使用其中一个试图为OCaml带来多核支持的项目(其中最严重的可能是OCamllabs上的人this project。目前,OCaml GC缺乏真正的多核支持,虽然在实践中这并不是一个很大的问题,但有些人似乎没有它就能生存。
答案 1 :(得分:2)
这不应该代表太多的工作,因为OCaml GC已经在LLVM中以某种方式处理:http://llvm.org/docs/GarbageCollection.html#the-erlang-and-ocaml-gcs。这意味着堆栈帧描述符被正确地发出用于函数调用(不是最小的,但是这应该通过当前的LLVM GC处理开发来改进)。旧版本的LLVM文档告诉我们OCaml gc没有使用写入障碍,这是错误的。因此,您应该小心确保生成的代码对于分配是正确的。
对于LLVM GC接口,当前的接口非常受限制,并且不允许生成非常高效的代码,但这应该足以在等待下一个版本时进行原型设计,该版本应包含该方面的一些重要更改。