On Friday, 23 February 2018 at 00:05:59 UTC, Martin Nowak wrote:
The main use-case for craming multiple imports into a line is
not libraries but scripting, examples, and maybe unit tests.
Those are cases when selective imports shouldn't be used.
experimental.scripting was introduced to reduce import length to
absolute minimum - 11 characters.
That's your opinion, my opinion is that importing 6 symbols
from 6 different modules for a tiny cli tool sucks and bloats
code example. So the alternative is to not use selective
imports, but only those and static imports have a clear path to
become lazy (https://issues.dlang.org/show_bug.cgi?id=13255).
Are renamed imports already lazy?
Tiny cli tool uses all its imports and doesn't benefit from
laziness, only libraries do.
- use std.experimental.scripting
Indeed an alternative with a similar goal, reducing the
amount of typing/noise for hacking. Importing all phobos
modules will lead to a couple of symbol conflicts (e.g. write),
It's perfectly thinkable to use both `write` functions, and
selective imports won't help you there, but renamed imports will.
Is it just me or people ignore existence of renamed imports?
#RenamedImportsMatter
and it still increases compile times and binary sizes noteably
(though compile time is a lot better than it used to be).
Is it because of dead templates? As a temporary solution you can
compile the code to a library, this way the linker will be able
to skip unreferenced code.
- why hasn't this been a DIP
Because it looked primarily like a minor grammar
rectification that doesn't break anything and is entirely
optional.
Also DIPs are a crucial process for our language, and it
seems problematic to clog it with trivialities.
Though the feature met skepticism from the start. Maybe voting
can be used as a simplified DIP process, just needs more people.
- it's useful for talks, posts, code puzzles or on a repl where
code is size constrained
Non-selective always win in terms of size.
- we're currently proliferating selective imports which cause a
lot of D code to become very brittle
(https://github.com/andralex/phobos/blob/cd3152c7bf4466e74b7fb9bd43d47e996caf5918/std/datetime/systime.d#L10076-L10083)
I'd convert those to non-selective imports.
import std.algorithm.iteration, std.ascii, std.exception,
std.format, std.meta, std.range, std.stdio, std.string;
(well, my editor has decent word wrapping)