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

欢迎!请参阅关于页面以了解更多关于这是如何工作的信息。

0
Clojure
已关闭

build.xml中有一份要进行AOT编译的命名空间列表,但有几个命名空间未包含在该列表中,因此没有为这些命名空间创建或包含在构建的标准Clojure JAR文件中的.class文件。

缺少的命名空间包括
- clojure.core.reducers
- clojure.instant
- clojure.parallel
- clojure.uuid

建议:附加的补丁将clojure.instant和clojure.uuid添加到已编译的命名空间中。由于clojure.parallel已被弃用并需要JSR-166 JAR,因此未包含在内。

补丁:clj-1509.patch

已关闭,备注:修复在1.11.0-alpha2中

4回答

0

评论者:alexmiller

进一步研究后,clojure.core.reducers使用compile-if宏来确定可用fork/join的版本,因此对此命名空间的AOT编译将在构建时而不是在运行时修复此决策,因此不能包含在内。

0

评论者:alexmiller

自Clojure 1.10以来,它依赖于Java 1.8,所有这些条件构建情况都已移除。我相信clojure.instant和clojure.uuid现在正在进行递归编译,尽管不是明确地。

0

评论者:alexmiller

实际上 clojure.parallel 仍然依赖于 jsr166 中存在的某些内容,但其他所有内容都已经消除了条件性。添加了缺失的补丁。

0
参考资料: https://clojure.atlassian.net/browse/CLJ-1509 (由 alexmiller 报告)
...