Walter Bright wrote:
Yigal Chripun wrote:
this is related to D's compilation model which is copied from C/C++
and it seems to me that this model is outdated. C#'s model of
assemblies and metadata seems more capable. for instance there's no
need for header files, that info is stored in the metadata of the
assembly.
D can do the same thing - it can use the source of the module directly,
or it can use a hand-generated 'header' file, or an automatically
generated 'header' file. The latter is semantically indistinguishable
from compiling the source module to a "metadata" file.
I originally considered having D write such a "metadata" file, until I
realized I didn't have to invent a format and a writer and reader for
that format. I could just use the D source code notation as a "metadata"
file and reuse the existing code.
The D system has a major limitation, though -- you can't split the
source for a module across multiple files. Which pushes you towards
enormous source files. It's more restricted than both C# and C++ in this
respect.