phobos dependencies

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Jan 5 23:02:17 PST 2014


On 1/5/14 10:31 PM, Walter Bright wrote:
> On 1/5/2014 9:22 PM, Andrei Alexandrescu wrote:
>> On 1/5/14 8:44 PM, Kenji Hara wrote:
>>> Honestly, "lazy import" (== defer loading module file and running
>>> semantic analysis for symbol search) would improve compilation speed for
>>> selective imports and static imports, but it would have no merit for
>>> basic imports.
>>>
>>> So precisely, "all imports lazy would be a net large win." is not
>>> correct.
>>
>> Consider:
>>
>> import std.stdio;
>> void main() { writeln("Hello, world!"); }
>>
>> Currently std.stdio and all modules transitively imported by it would
>> be opened.
>>
>> With lazy imports, std.stdio gets opened and then writeln() gets
>> semantically
>> analyzed. Only modules required by writeln() itself will actually be
>> opened. Big
>> difference.
>
> import bar;
> import foo;
>
> Importing foo can never be done lazily if there are unqualified
> references to symbols in bar.

Yah, but modules transitively imported in foo and bar need not be loaded 
eagerly. That's where the win comes from. Took me a while to figure.

Andrei



More information about the Digitalmars-d mailing list