Welcome! Please see the About page for a little more info on how this works.

0 votes
in Clojure by

There is a list of namespaces to AOT in build.xml and several namespaces are missing from that list, thus no .class files for those namespaces are created or included in the standard clojure jar file as part of the build.

Missing namespaces include:
- clojure.core.reducers
- clojure.instant
- clojure.parallel
- clojure.uuid

Proposal: Attached patch adds clojure.instant and clojure.uuid to the compiled namespaces. clojure.parallel is deprecated and requires the JSR-166 jar so was not included.

Patch: clj-1509.patch

4 Answers

0 votes
by

Comment made by: alexmiller

Looking at this a bit further, clojure.core.reducers uses the compile-if macro to determine what version of fork/join is available so AOT-compiling this namespace would fix that decision at build time rather than runtime, so it cannot be included.

0 votes
by

Comment made by: alexmiller

As of Clojure 1.10, which relies on Java 1.8, all of these conditional build cases have been removed. I believe clojure.instant and clojure.uuid are being transitively compiled now, though not explicitly.

0 votes
by

Comment made by: alexmiller

Actually clojure.parallel is still dependent on things that only exist in jsr166, but all the others have had conditionality removed. Added missing patch.

0 votes
by
Reference: https://clojure.atlassian.net/browse/CLJ-1509 (reported by alexmiller)
...