DConf 2014 Day 1 Talk 4: Inside the Regular Expressions in D by Dmitry Olshansky
Dmitry Olshansky via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Thu Jun 12 02:17:26 PDT 2014
12-Jun-2014 03:29, Adam D. Ruppe пишет:
> On Wednesday, 11 June 2014 at 18:03:06 UTC, Atila Neves wrote:
>> I wish I'd taken the mic at the end, and 2 days later Adam D. Ruppe
>> said what I was thinking of saying: unit test and debug the CTFE
>> function at runtime and then use it at compile-time when it's ready
>> for production.
>
> Aye. It wasn't long ago that this wasn't really possible because of how
> incomplete and buggy CTFE was, you kinda had to do it with special code,
> but now so much of the language works, there's a good chance if it works
> at runtime it will work at compile time too.
>
> I was really surprised with CTFE a few months ago when I tried to use my
> dom.d with it... and it actually worked. That's amazing to me.
>
> But anyway, in general, the ctfe mixin stuff could be replaced with an
> external code generator, so yeah that's the way I write them now - as a
> code generator standalone thing then go back and enum it to actually
> use. (BTW I also like to generate fairly pretty code, e.g. indentend
> properly, just because it makes it easier to read.)
>
This one thing I'm loosing sleep over - what precisely is so good in
CTFE code generation in _practical_ context (DSL that is quite stable,
not just tiny helpers)?
By the end of day it's just about having to write a trivial line in your
favorite build system (NOT make) vs having to wait for a couple of
minutes each build hoping the compiler won't hit your system's memory
limits.
And these couple of minutes are more like 30 minutes at a times. Worse
yet unlike proper build system it doesn't keep track of actual changes
(same regex patterns get recompiled over and over), at this point
seamless integration into the language starts felling like a joke.
And speaking of seamless integration: just generate a symbol name out of
pattern at CTFE to link to later, at least this much can be done
relatively fast. And voila even the clunky run-time generation is not
half-bad at integration.
Unless things improve dramatically CTFE code generation + mixin is just
our funny painful toy.
--
Dmitry Olshansky
More information about the Digitalmars-d-announce
mailing list