On Sunday, 6 September 2015 at 14:36:53 UTC, chris stevens wrote:
Hi All,

I am considering using D for my latest project and there are a few features I would like and am not entirely sure at this point whether D has them. They are:

- dynamic creation of classes/structs at runtime (think I can emulate this with variants/dynamic)

At runtime, no. However... if it doesn't actually need to be runtime and is in the code itself you can have code be generated at compile time.

- dynamic compilation of code files at runtime

Only by running a compiler. But as above, if it doesn't strictly have to be at runtime and everything is specified in the source files, you can compute strings at compile-time and mix them in to generate code.

- some basic code creation tools

mixin, template mixin, CTFE.

Are the above possible?

It really depends on what you want to do. A lot of the dynamic code generation that goes on is done at runtime because that's what other languages support. In my experience a lot of those use-cases can be done at compile-time in D. A famous example is compile-time regular expressions. Unless you're writing a tool similar to grep, all regexes in your program are known at compile-time. They don't _need_ to be parsed/interpreted/compiled at run-time, that's just what every other language that isn't D does.

So, if your use-case depends on information from the file-system, user interaction, networking, etc. then your only choice is to generate text files with D code and compile it. If, on the other hand, it's all defined by the code you write, then D has excellent compile-time code generation tools at your disposal.

Atila

Reply via email to