Clojure 1.8.0's jar contains clojure.core with directly linked vars.
This means our trick of monkey-patching `load` no longer works.
Instead, we must also monkey-patch `require` and `use`, and completely
copy their implementations.
20 November 2015 reopen
clojure.core/compile similarly uses `load`. It's safe to insert core.typed into this pipeline because we pass the results of type checking to Compiler.java anyway, so the results of type checking can be AOT compiled.
Ideally CLJ-1845 fixes the original problem, but it is not clear if it actually does.
This should print "patched" after every `require`.
20 November reopen
End 20 November reopen
27 Jan 2015 Revert
Now Clojure 1.8.0 is released and there are no direct-linking issues, we can revert both patches.
End 27 Jan 2015 Revert
No longer needed in 1.8.0-RC1, `load` is declared dynamic.
`clojure.core/compile` also uses `load`, so that must also be monkey-patched.
Reopening as Clojure 1.8.0 fixes the direct-linking issue.