[D-runtime] Why does druntime us .di files instead of .d?
Jonathan M Davis
jmdavisProg at gmx.com
Wed Jul 13 15:19:06 PDT 2011
On 2011-07-13 14:58, Walter Bright wrote:
> On 7/13/2011 2:21 PM, Jonathan M Davis wrote:
> > On 2011-07-13 13:36, Walter Bright wrote:
> >> .di files are used when they are generated from .d files.
> >
> > Yes. I get that. But why are .di files generated in the first place?
>
> To 1. hide implementation details and 2. speed up compilation.
>
> > Phobos just uses .d files.
>
> It'll eventually migrate to .di files.
Given its heavy use of templates, I'm not sure how much that'll buy us in
terms of compilation speed, and since it's all open source, I don't know why
it would matter about hiding implementation details. The documentation gives
the API. You look at the source if you want more than that, in which case you
probably want the .d file and not a .di file. But I guess that even
incremental improvements are worth something as far as compilation speed goes,
and there is a fair bit of functionality which isn't templated (though
increasingly, I think that it's in the minority).
Regardless, if it's making it so that stuff isn't CTFEable (which at least
seems to be the case with druntime at the moment - I'm not quite sure what's
going on there, but people have been getting errors about it), then I would
think that that would make using .di files a really bad idea in general, since
you effectively risk killing a language feature - and in the standard library
no less.
But anyway, thanks for the reasoning on why druntime uses .di files. I've
always found it odd (and honestly, I still find it odd, but at least
understandable now). I've never seen much point to .di files at all. But if
they speed up compilation, then that's definitely of some value.
- Jonathan M Davis
More information about the D-runtime
mailing list