2024 Clojure 状态调查!中分享你的想法。

欢迎!请查阅关于页面以了解更多关于其工作方式的信息。

0 投票
编译器

这个问题:[https://clojure.atlassian.net/browse/CLJ-1227](https://clojure.atlassian.net/browse/CLJ-1227) 报告了使用definline定义的函数在AOT编译时失败。

该问题被拒绝,理由是最终编译器宏会替代它,并且它的“实验性”标志意味着你不应该使用它,并且假设它可能存在bug,但它本身却被Clojure核心所用,因此这个问题在针对Clojure核心本身的代码AOT编译时表现出来。

尽管如此,最后有一个评论说:

这个问题的根本原因是[https://clojure.atlassian.net/browse/CLJ-1330#icft=CLJ-1330](https://clojure.atlassian.net/browse/CLJ-1330#icft=CLJ-1330),由Nicola Mometto在上述线程中调查:[http://dev.clojure.org/jira/browse/CLJ-1330](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评论我不确定这还是否可能是一个问题。
...