Toward Truly Portable Clojure Libraries
Now that we have a growing number of Clojure dialects being actively developed, it's a good time to think about what it would take to formalize a portable Clojure layer that library authors can safely target. The ideal would be to have write-once, run-anywhere libraries that would work unmodified on JVM Clojure, ClojureScript, Babashka, Jolt, Glojure, let-go, Gobb, and any other dialect that implements Clojure semantics faithfully.
Today, the primary tool we have for that is .cljc reader conditionals, and
it's easy to see why it's not the right solution.
Reader conditionals become a maintenance nightmare the moment you go beyond
having a couple of platforms.
They push the burden of understanding internal semantics of every new dialect
onto library authors, and require libraries to be updated for each new
dialect.