On Saturday, 2 June 2018 at 17:17:02 UTC, Neia Neutuladh wrote:
On Friday, 1 June 2018 at 17:59:21 UTC, Steven Schveighoffer wrote:
The .di file is just an interface, it doesn't know what's actually compiled in the binary.

To put it another way, the compiler only generates a ModuleInfo (or dependency modules) for .d files. .di files are simply a public API for the .d files.

Yes, this is my point. (Communication is much harder than I thought.)

When you encounter a .di file, you can't rely on an automated tool to tell you what modules need to be initialized or figure out an order for them. You have to do it manually, and if you mess it up, you get undefined behavior.

I believe Steve's point was that with the suggested json file describing dependencies, that would be a part of the public interface, and so would be distributed alongside .di files. Of course, someone could forget to distribute those, and in such a case the runtime cycle test could be extended to do the conservative test if the compiler hasn't registered all modules as having json info.

--
  Simen

Reply via email to