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

Reply via email to