Found on Medium: Why we chose the D Language and vibe.d
Steven Schveighoffer
schveiguy at gmail.com
Thu Dec 20 14:39:32 UTC 2018
On 12/19/18 5:52 PM, bauss wrote:
> On Wednesday, 19 December 2018 at 17:42:00 UTC, H. S. Teoh wrote:
>> On Wed, Dec 19, 2018 at 10:28:59AM -0500, Steven Schveighoffer via
>> Digitalmars-d wrote: [...]
>>> I'm curious if the author has any words to say on vibe.d compile
>>> times. If they value fast compile times over performance, I can't
>>> imagine they are using diet templates.
>> [...]
>>
>> Yeah, in my own vibe.d project I eventually separated out diet
>> templates into their own modules that are separated from "business
>> logic". Which I should be doing anyway, I suppose, in the spirit of
>> good software design, but the primary motivation at the time was to
>> keep compilation times under control.
>>
>> I'm quite tempted to cook up my own HTML generation framework that
>> does codegen as a separate step, using D tools to generate D code,
>> that then gets compiled into the actual executable. Despite all the
>> power of CTFE and other compile-time features, past a certain level of
>> complexity I really want to physically see the generated code rather
>> than wade through inscrutable templates and mixins and try to imagine
>> in my head what the generated code looks like. (You wouldn't believe
>> it, debugging is SO MUCH easier when you don't have to instantiate
>> templates in your head just to understand what the code is trying to
>> do, but can just look at the actual generated code being fed to the
>> compiler as a file.)
>>
>>
>> T
>
> Pretty much solved in Diamond.
>
> https://diamondmvc.org/
>
> Basically: https://github.com/DiamondMVC/Diamond/blob/master/app/web.d#L192
>
> viewResult.source is the exact generated source for a specific view.
What are the compile-time penalties for diamond templates? I have to try
it one of these days.
I think diet templates are great, but the compile-time penalty is so
bad. I really think they would be more palatable if they were processed
pre-compilation. Parsing and cross-compiling a DSL right in the compiler
is a neat trick, but there are certainly better ways to do it than with
mixins and CTFE.
-Steve
More information about the Digitalmars-d
mailing list