> it's exactly the same code that gets run on Scala-JVM
That can't be exactly true, since "Awaitable"  doesn't appear anywhere in the scala-js codebase. So I guess as long as you don't mention that trait by name, or attempt to block on a future, then your effectively duck-typed Scala-JVM code will be able to run unmodified on Scala-JS.
We've managed to get a hello world app down to about 300kb; most of that is the standard library, and even a several-1000-LOC game like [roll](http://lihaoyi.github.io/roll/) clocks in at about 340kb. Getting this number down is WIP.
Yeah; they are waaaay more hygienic than what we started with though. For example, it is incredibly easy to "get it wrong" trying to utilize these tools to make things hygienic, but in general that should cause the macros to fail pretty quickly (`NameError`) rather than continue working unhygienically, so you're not likely to accidentally capture anything. Not perfect, but not bad (for now)
It would be great if someone who actually knows what he's doing (e.g. a Scheme `syntax-XXX` expert) could chip in with help/advice on how to proceed.
MacroPy is basically finished in its current state, as a proof of concept and bundle of demos. Next steps include breaking the macros themselves into separate project and polishing the core into a solid foundation for others to build upon.
We also very nicely wrote up and documented both the demo macros (case classes, pattern matching, etc.) as well as the macro writing process, so hopefully others will have an easy time getting into it