2024 Clojure现状调查中分享您的看法!

欢迎!请参阅关于页面以获取更多关于如何使用本网站的信息。

0
编译器

此问题: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以来已经得到修复。

所以我的问题是,CLJ-1227基本上已经修复了吗?你现在可以使用definline与AOT代码一起使用吗?还是说只是Clojure核心使用definline的问题得到了修复?

谢谢

PS:我在ask.clojure.org上找不到该问题,所以我想可能已经关闭的问题还没有迁移,如果这是一个重复的问题,请见谅。

1 答案

0

被didibus选择
 
最佳答案

重新运行CLJ-1227所附的复现代码看起来对我的系统来说已经修复了。你有没有遇到什么问题吗?

我仍然认为definline是实验性的,Rich对这个功能并不真正重视,尽管这显然不是一个紧急问题。:)

by
没有什么特别的。这在Slack上的一些相关话题中提到过,我在研究它。在我的工作中,我们偶尔会遇到一些难以追踪的AOT问题,所以我喜欢了解其边缘情况,和Jira评论中,我不确定这仍然可能是一个问题。
...