One of the original goals in Odin was metaprogramming. However, as development progressed, it has come clear that this is such a broad term which could mean anything.
The kinds of metaprogramming originally conceived are compile time execution, AST modification, and "semantic macros".
Here is the new idea: allow the user to "plug-in" their own metaprogramming functionality as a stage in the compiler. With the specific stages being:
- File loading (get text into memory)
- Tokenizing/Lexing
- Parsing
- Type checking