>Macros are of course enormously useful but also very difficult to shoe horn into a c-family language properly since they need to be expanded at compile time (unless you just go ahead and embed you compiler backend into the runtime system of your language.
No, that's not necessary at all, with Rust-like macros which are simple pattern->template things. Macros have zero runtime cost.