We've learned a bit about how ClojureScript's macro system works in bootstrapped mode over the past half year.
Here is a collection of posts I've made on the subject.
But first, it's probably worth reading https://github.com/clojure/clojurescript/wiki/Differences-from-Clojure#macros
- Portable Macro Musing was written prior to bootstrapped macros really being available (really—at the time all you could do was stuff like this.
- Runtime macroexpand is about using bootstrap's runtime capability to expand macros.
- Messing with Macros at the REPL explores a bit about how bootstrap macros are put into a pseudo-namespace.
- ClojureScript Macro Tower and Loop digs into the idea of compilation stages.
- ClojureScript Macros Calling Functions talks about how bootstrap ClojureScript macros can "cleanly" call ClojureScript functions.
- Collapsing Macro Tower shows a case that works in bootstrap without needing to add additional namespaces in order to satisfy the ClojureScript macro compilation model.