When load-lib fails, a namespace is still created

Description

When requiring a namespace that doesn't compile, a namespace is still created. The attached patch removes the namespace on failure if the namespace wasn't already present on entry to load-lib. See the test case in the patch for repro instructions.

This is obviously a subset of having atomic loads. Would a step further in this direction, e.g. using a swapable state object within clojure.lang.Namespace be of interest?

Environment

None

Assignee

Unassigned

Reporter

Hugo Duncan

Labels

None

Approval

Ok

Patch

Code and Test

Fix versions

Affects versions

Priority

Major
Configure