Directly-linking in Clojure 1.8.0 interferes with load monkey-patching
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.
Future Revert (Completed, see 27th January changes)
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
Reopening as Clojure 1.8.0 fixes the direct-linking issue.
`clojure.core/compile` also uses `load`, so that must also be monkey-patched.
No longer needed in 1.8.0-RC1, `load` is declared dynamic.