Add guidance on when to use AOT compilation
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Documentation
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- clojure
- Domain
- compilers, documentation
Research direction
Start by reviewing the existing AOT compilation reference linked in the issue and identify where guidance on use and non-use belongs. Add documented guidance for application and library authors, including the listed dependency, metadata, and Clojure-version concerns. Done means the documentation clearly explains when AOT is appropriate and how library authors can use it safely.
Written by the indexing model from the issue text.
Description
There is a good reference on AOT compilation, but I don't see strong guidance on when to use it, or more specifically when to not use it.
My understanding is that it is relatively safe to employ AOT compilation for an app.
But sometimes a library author will naively use AOT compilation when creating their release jar without realizing the problems this can cause for users of their library. These problems include (additions and corrections most welcome):
- aot compilation will create class files for library dependencies, this effectively brings in these dependencies (or portions of dependencies) at jar creation time, rather than runtime. A user might bring in different versions of those dependencies. Having multiple instances of a dependency on the classpath at runtime leads to confusion.
- a class file will not include metadata such as original clojure filename and line number.
- different versions of Clojure can generate different bytecode
I suppose a note on how/when to safely employ AOT compilation for a lib might also be helpful.
- Dominant language
- HTML
- Stars
- 259
- Forks
- 275
- PR merge metrics
- No merged PRs in 30d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from clojure/clojure-site
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
clojure/clojure-site#723 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
clojure/clojure-site#538 · 3 comments ·
-
help wanted
Difficulty 1/5 Under an hour Newbie friendliness 62/100
clojure/clojure-site#386 · 1 comment ·
-
Difficulty 1/5 Under an hour Newbie friendliness 55/100
clojure/clojure-site#715 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
clojure/clojure-site#713 ·
All issues in clojure/clojure-site
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
objectionary/eo#8923 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Coarray integration tests carry no LABELS, so run_tests.py silently skips them under every backend Opencoarray
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
internal.h中,漏掉了1个定义。 Open
Difficulty 1/5 Under an hour Newbie friendliness 95/100