On Friday, 4 May 2012 at 19:21:02 UTC, Andrew Wiley wrote:
On Fri, May 4, 2012 at 1:46 PM, foobar <[email protected]> wrote:

On Friday, 4 May 2012 at 18:30:32 UTC, Andrej Mitrovic wrote:

On 5/4/12, foobar <[email protected]> wrote:

The di files are mostly meant to be machine read (e.g. the
compiler) and this belongs as part of the library file in order to provide ease of use and maintain the relationship between the
binary code and it's interface.

maintaining two sets of files that could easily get out of sync
and *not* using the docs is way more insane.


I'd say the docs are more likely to be out of sync than .di code. If the .di code is really out of sync you'll likely even get linker
errors. And not everything ends up being documented.

And then what about existing tools like IDEs and editors. E.g.
autocomplete wouldn't work anymore.


I'd say you'd be wrong.
Both di and docs are auto-generated from the same source.
As I said docs are designed for human consumption. This includes all sorts of features such as a table of contents, a symbol index, the symbols should
have links, the docs provide usage examples, etc, etc.
Docs can be put online thus ensuring they're always up-to-date.

Tools should either read the data from the lib file or retrieve it from
the web. Keeping separate local di files is simply insane.

And really, have you never heard of Java? How about Pascal?
Should I continue back in history to all the languages that implemented
this feature decades ago?
C/C++ is a huge PITA with their nonsense compilation model which we
shouldn't have copied verbatim in D.


I like the idea, but what about templates? For them, you'd basically be stuffing source code into the object files (unless you came up with a way to store the AST, but that seems like the effort/benefit ratio wouldn't be worth it since we currently have no way to preserve an AST tree between
compiler runs).
Otherwise, I find this idea very compelling. I'm sure there are probably
other issues, though.

C++ has pre-compiled header files (.pch) which speedup compilation time for projects with lots'o'templates. The same kind of info could be stored inside the object files, for example by serializing the AST as you said yourself.

There are many uses for this kind of technology. we can store additional info that currently isn't available for all sorts of link-time optimizations.

Reply via email to