On Tuesday, 3 January 2017 at 20:07:59 UTC, Andrei Alexandrescu wrote:
Arguing that local imports have been successful so we should simply do more of it is not a good argument, as there comes a point of diminishing returns. You need to show that there are still worthile gains to be made from changing the language again, which is why I want to benchmark
this feature with Walter before deciding.

You can be reasonably certain the benchmarks will improve as projected - starting in proportion to the the transitive fanout of top-level imports (10.5x for the standard library) and going down thereafter with the size, complexity, and actual dependencies of the module being compiled. All in all measurable but not dramatic. The same improvement will be brought about by lazy imports, and it won't be the deal maker/breaker. If you're waiting for the numbers to get convinced of anything, you already consider DIP1005 useless.

I don't need dramatic, a solid win is fine. A small 10% or less improvement in the speed of the import phase of compilation probably isn't worth it.

Rather, the
argument is that local imports mostly solved this problem, so why bother adding new syntax for the dozen remaining symbols from 2-3 modules that
are commonly used in template constraints?

I understand. It is my humble opinion that we are "mostly pregnant" for as long as we require top-level imports. The real change of phase occurs when there are ZERO imports at top level. That's the prize DIP1005 is after.

If you believe the benchmarks won't be dramatically different, I wonder why you think there will be a phase change.

In the end, this is a minor DIP that is easily bikeshedded, as everybody
can grasp it and have an opinion on it.  I have refrained from
commenting recently because I will let benchmarking settle it for me.
Obviously, that won't suffice for others.

I do agree that if framed as a modest improvement in build economics, it is quite unimportant. But that's a problem with the DIP; its main strength is better encapsulation, which is no small thing.

Encapsulation is not an end in itself. You have listed four main advantages of this change in the DIP. I have noted that I don't find the first three relating to reasoning and refactoring worth adding syntax for, while admitting that may be subjective. The fourth talks about scalability, which I interpreted as either compilation speed or some other measurable gain, hence my asking for benchmarks.

If scalability refers to something else- it can't be reasoning or refactoring as those are listed as separate advantages- I'd like to hear what it is. If it's measurable, I'd like to measure it first.

Reply via email to