digitalmars.D - Redundancy of DRuntime and Phobos
- Q. Schroll (29/29) May 21 2021 I noticed that `core.internal.traits` contains a lot of stuff
- Paul Backus (3/20) May 21 2021 Probably for the documentation. Public imports don't generate
- Adam D. Ruppe (9/13) May 21 2021 As I understand it, they were added to Phobos first, then people
I noticed that `core.internal.traits` contains a lot of stuff
that is exactly the same in `std.traits` and `std.meta`. Is that
for legacy reasons or should new additions be also redundant (and
why)?
For example, there's redundant `AliasSeq` which I understand
because it's kind of trivial and public-importing is on par with
it. (I'd still prefer the import.)
Another example is `Unconst`, `Unqual`,
`hasElaborate`*`Whatever`* that use a public import, but for
whatever reason, they encapsulate the import and make an
unnecessary template instance. None simply do
```D
public import core.internal.traits : Unconst;
```
but follow the pattern
```D
template Unconst(T)
{
import core.internal.traits : CoreUnconst = Unconst;
alias Unconst = CoreUnconst!(T);
}
```
I guess there's a good reason to do this and I'd like to
understand.
In `core.internal.traits` there is a lot of stuff commented with
"taken from". Why all this duplication? Are PRs to Phobos welcome
that public-import the `core` stuff? Are PRs to DRuntime welcome
that move improved stuff from Phobos to it (and replace the
Phobos stuff by a public import)?
May 21 2021
On Friday, 21 May 2021 at 16:15:57 UTC, Q. Schroll wrote:
Another example is `Unconst`, `Unqual`,
`hasElaborate`*`Whatever`* that use a public import, but for
whatever reason, they encapsulate the import and make an
unnecessary template instance. None simply do
```D
public import core.internal.traits : Unconst;
```
but follow the pattern
```D
template Unconst(T)
{
import core.internal.traits : CoreUnconst = Unconst;
alias Unconst = CoreUnconst!(T);
}
```
I guess there's a good reason to do this and I'd like to
understand.
Probably for the documentation. Public imports don't generate
good ddoc output.
May 21 2021
On Friday, 21 May 2021 at 16:15:57 UTC, Q. Schroll wrote:I noticed that `core.internal.traits` contains a lot of stuff that is exactly the same in `std.traits` and `std.meta`. Is that for legacy reasons or should new additions be also redundant (and why)?As I understand it, they were added to Phobos first, then people wanted them in druntime, but druntime cannot import phobos, so it copy/pasted, but then the duplication was annoying, so phobos then imported druntime. I think it is more an accident of history and maybe some compatibility worries more than anything else. Or indeed it could be doc related. adrdox handles public imports pretty ok but ddoc doesn't.
May 21 2021









Paul Backus <snarwin gmail.com> 