I don’t understand the distinction you’re drawing? Doing general-purpose computation in/for a “static” (i.e. compile-time) pass is, to my mind, exactly what metaprogramming is.
But it’s not really the program modifying itself, it’s an external tool slicing out unused pieces of code (even though I guess it is kind of like a macro)
The way I see it is that it’s general-purpose programming happening at build time and written specifically for this program. I guess if it became a standard tool that was used when building any program I’d see it as not metaprogramming.
I wouldn’t consider that metaprogramming since lekktor was a static pass that removed “useless” code paths, but still an interesting article.
I don’t understand the distinction you’re drawing? Doing general-purpose computation in/for a “static” (i.e. compile-time) pass is, to my mind, exactly what metaprogramming is.
But it’s not really the program modifying itself, it’s an external tool slicing out unused pieces of code (even though I guess it is kind of like a macro)
The way I see it is that it’s general-purpose programming happening at build time and written specifically for this program. I guess if it became a standard tool that was used when building any program I’d see it as not metaprogramming.