For all that the ns form is "just" a macro, the reality of use is that it's treated as the module header and isn't an especially simple or easy one at that. This issue tracks simplifying the ns macro and making it strict with regards to only performing module-meaningful Namespace manipulations and simplifying/reducing those manipulations to those in common usage and considered good style.
[X] Deprecate clojure.core/use #112
[x] Deprecate clojure.core/refer #113 / #116
[ ] Make ns strict with reference to what directives it'll accept rather than magically accepting anything in clojure.core.
[ ] Forms which are legal within the strict ns form should emit warnings or be illegal outside of the ns form. For example top level require and import out of the ns line should probably be a cause for complaint. However this one is up for debate since there are load order reasons to not be strict about this.
For all that the
ns
form is "just" a macro, the reality of use is that it's treated as the module header and isn't an especially simple or easy one at that. This issue tracks simplifying thens
macro and making it strict with regards to only performing module-meaningfulNamespace
manipulations and simplifying/reducing those manipulations to those in common usage and considered good style.clojure.core/use
#112clojure.core/refer
#113 / #116ns
strict with reference to what directives it'll accept rather than magically accepting anything inclojure.core
.ns
form should emit warnings or be illegal outside of thens
form. For example top levelrequire
andimport
out of thens
line should probably be a cause for complaint. However this one is up for debate since there are load order reasons to not be strict about this.