These are the big macro API changes I foreshadowed in chat. Comments appreciated!
2b47f4b is the central commit. Its message is a good overall summary.
If you're skimming, here's an even shorter bullet-point summary:
User-defined macros are now treated precisely the same as compiler macros.
User-defined macros can now return estree objects, which means you're free to experiment with crazy stuff like #11.
S-expressions are now always represented as JavaScript objects, both for macro arguments and macro return values. No more AST classes.
Macro return values are not coerced to S-expression AST nodes anymore. For example, Numbers and Arrays were previously coerced to atoms and lists, but now error.
"Capturing macros" go away: macros just capture their environment by default, because that's the sensible main use-case. Macro calls in macros' return values are now correctly expanded even for macros defined later (#27).
These are the big macro API changes I foreshadowed in chat. Comments appreciated!
2b47f4b is the central commit. Its message is a good overall summary.
If you're skimming, here's an even shorter bullet-point summary: