Phobos addition formal review: std.experimental.allocator
Mike via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jun 24 00:01:01 PDT 2015
On Wednesday, 24 June 2015 at 04:00:11 UTC, Andrei Alexandrescu
wrote:
>
> std.allocator.allocator.IAllocator
> std.allocator.allocator.theAllocator;
>
> Yep, "ridiculous" is the first thing that comes to mind.
>
> I find it difficult to digest (ehm) the fact that the same
> community that thinks "std.allocator" is just not going to cut
> the mustard, simultaneously believes "std.allocator.allocator"
> is a good idea.
Of course you are right. It was indeed a poor suggestion. But
it's the only example I could find where a separate module name
was used to declare the high-level API. Perhaps it was even
written before package.d existed.
The case against std.allocator isn't about the name, but about
the fact that it doesn't do what people, apparently, expect:
import the entire public API.
I count only 4 uses of package.d in official Phobos:
https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm/package.d
https://github.com/D-Programming-Language/phobos/blob/master/std/container/package.d
https://github.com/D-Programming-Language/phobos/blob/master/std/range/package.d
https://github.com/D-Programming-Language/phobos/blob/master/std/regex/package.d
All of them seem to import the entire public API, but only
std.algorithm.package.d is exclusively used for public imports.
The others all have some definition of high-level API features.
So, I don't see a precedent one way or another. And maybe that's
how it should be: defined based on the intended use of the
package.
Unfortunately, those against using package.d for the high-level
API, did not seem to offer a suggestion for where to put your
porcelain. So, if you wish to accommodate them and need a name,
consider std.allocator.api.
Mike
More information about the Digitalmars-d
mailing list