Skip to end of metadata
Go to start of metadata

As of 1.9.0-alpha11 some Clojure core macros have specs defined (currently let, if-let, when-let, defn, defn-, fn, and ns). These specs are checked during macroexpansion and thus previously silent invalid code may now fail at compile time. Because this has caused some churn in community libraries, this page is collecting info about known problems and when they are fixed so you can update your libs.

Common problems:

  • Using (ns (require ...) (import ...)) instead of (ns (:require ...) (:import ...))
  • Qualified symbol in fn or defn name (should be simple symbol) - this is nearly always the result of a macro that generates fn or defn
  • Bad :or map keys in destructuring - :or map keys should always be simple symbols (the symbols being let-bound)

All info below has been manually entered and the "Fixed in" column is likely to be lagging reality - feel free to update.


LibraryVersion found
(earlier likely also broken) 
NamespaceProblemStatusFixed as of (test ns)bad ns declarationFixed1.9.0-alpha11
ClojureScript1.9.93cljs.source-map.base64-vlqbad ns declarationFixed1.9.198
Spyscope0.1.5spyscope.core, spyscope.replbad ns declarationPR merged 
http.async.client1.1.0clj.http.async.client.utilbad :or mapFixed1.2.0
claypoole1.1.3com.climate.claypoolequalified symbol in fn namePR merged 
core.unify0.5.6clojure.core.unifyqualified symbol in fn nameFixed


tesser.core1.0.1tesser.corequalified symbol in fn namePR merged 
aleph0.4.2-alpha6aleph.http.multipartbad :or mapPR merged0.4.2-alpha7
pretty0.1.29io.aviso.exception-test (test ns)bad ns declarationFixed0.1.30
ring-core1.3.0ring.util.mime-typebad ns declarationfixed long ago1.3.1 ns declarationfixed long ago0.2.4
clj-tuple0.1.7clj-tuplequalified symbol in fn namefixed long ago0.1.8
system0.3.1system.reload, system.replbad ns delcarationPR merged 
monger3.0.2monger.corebad :orFixed3.1.0
suchwow5.2.1suchthat.sequencesbad ns declarationFixed5.2.3
midje1.9.0-alpha4midje.checkersbad ns declarationFixed1.9.0-alpha5
lein-cljsbuild1.1.3cljsbuild.crossoverbad ns declarationFixed1.1.4
algo.monads0.1.5clojure.algo.monadsqualified symbol in defn nameFixed


prone1.1.1prone.middlewarebad :or mapFixed1.1.2


And some other projects that don't have direct problems but having issues due to dependencies:

LibraryVersionBroken depsCommentFixed as of
liberator0.14.1core.unify, clojurescript, ring-core  
riemann5.6.3tools.namespace, http.async.client  
core.contracts0.0.5core.unify 0.0.6
midje1.9.0-alpha4core.unify 1.9.0-alpha5