Subject: [bug#53765] [PATCH v2 05/18] gnu: Add clojure-core-memoize.

From: Maxime Devos <[email-masked]>
Date: Fri, 18 Mar 2022 14:22:21 +0100

Reily Siegel schreef op vr 18-03-2022 om 10:01 [+0100]:
> > Looks like there's a bug somewhere then.  Has this been reported? 
> > Could a link be added to the report so we know when the #:aot-
> > exclude
> > can be removed?  If it's an issue with ant-build-system, can this
> > be
> > reported?
> 
> Clojure libraries are usually not designed to be AOT-compiled, and
> are largely distributed in source form. The fact that Guix's
> clojure-build-system chooses to AOT all Clojure code by default is
> confusing to me.

For languages for which a compiler is available, AOT is rather standard.
(E.g., C, C++, Guile Scheme, Python, Java, Fortran).  Apparently Clojure
has a compiler as well.  Basically, why not AOT when it is possible, instead
of delaying compilation until runtime?

> At some point, this default should probably be changed because many
> Clojure libraries rely on the fact that they are distributed
> uncompiled to work properly.

How can a Clojure library rely on this fact in the first place?  I
don't quite see how -- for comparison, there are a few methods in Guile
for detecting if it is has been compiled or is being interpreted,
e.g. some uses of 'eval-when', '%load-compiled-path' or 'procedure-
name', but they are rather convoluted and unused (except in examples).

Also, if a Clojure library misbehaves when being AOT-compiled, without
additional context, that seems like a bug in the Clojure library to me
(or the AOT-compilation code).

Greetings,
Maxime.