欢迎!请参阅关于页面以获取更多关于如何使用本网站的信息。
此问题:https://clojure.atlassian.net/browse/CLJ-1227 报告了使用definline定义的函数在AOT编译下失败。
问题被拒绝,原因最终是编译器宏会替换它,并且它的“实验性”标记意味着你不应该使用它,并假设它可能存在错误。但实际上Clojure核心本身也使用了它,因此问题在针对Clojure核心本身的代码AOT编译时才显现出来。
话虽如此,最后有一条评论说
此问题的根本原因是https://clojure.atlassian.net/browse/CLJ-1330#icft=CLJ-1330,如下引用的线程中Nicola Mometto所调查: http://dev.clojure.org/jira/browse/CLJ-1330因此,修复后者也将修复这个问题。
并且CLJ-1330自版本1.7以来已经得到修复。
1.7
所以我的问题是,CLJ-1227基本上已经修复了吗?你现在可以使用definline与AOT代码一起使用吗?还是说只是Clojure核心使用definline的问题得到了修复?
谢谢
PS:我在ask.clojure.org上找不到该问题,所以我想可能已经关闭的问题还没有迁移,如果这是一个重复的问题,请见谅。
重新运行CLJ-1227所附的复现代码看起来对我的系统来说已经修复了。你有没有遇到什么问题吗?
我仍然认为definline是实验性的,Rich对这个功能并不真正重视,尽管这显然不是一个紧急问题。:)