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基本上是修复了吗?你现在可以再使用AOT代码的definline了吗?或者只有Clojure核心使用definline的问题已被修复?

感谢

附言:我在ask.clojure.org上找不到这个问题的记录,所以我认为已关闭的问题可能没有被迁移,如有遗漏,请见谅。

1 个答案

0

入选
 
最佳答案

重新运行附加到CLJ-1227的项目重现程序,对我来说看起来已修复。你在某处看到问题了吗?

我仍然认为definline是实验性的,而且Rich并不真正希望为此使用它,尽管这明显不是一个紧迫的问题 :)。

by
并没有什么特别的事情。在slack上有关这个话题的一些相关讨论,我在阅读它。在我的工作中,我们有时会遇到一些难以追踪的AOT问题,所以我喜欢了解这个领域边缘情况,并且根据jira评论,我不确定这仍然可能是一个问题。
...