Nice to see bindings for Godot. NimForUE had similar issues now it (re)compiles for a new project (~250k LoC) in about 3 seconds on a M1 Max and < 100ms when using NimScript (experimental) :P
First thing I would do is to measure Nim's compilation times (use `--compileOnly`): For the generated code, the intimidate remediation is to use PCH in all your headers (this made NUE to go from 2M+ to 15s) For the bindings itself stop using macros, what you should do is to `repr` those macros and use the resulting Nim instead. NUE has a separate process for this which is triggered also when the user adds new C++ code or installs a third party plugin. Finally, if times arent good yet, `exportc` the bindings from above and import them back as a library so you skip the proc body sem BTW I would use the C++ backend for doing the bindings and emulate/bind godot cpp.
