The path to unity
Don
nospam at nospam.com
Sat Feb 7 02:18:35 PST 2009
grauzone wrote:
>> I'd remove from Phobos:
>>
>> std.
>> openrj
>> bigint (old one, by Janice)
>> regexp
>> socket
>> xml
>> much, much more (see more complete list in my previous post[1]).
>>
>> and suggest/force users use tango instead.
>
> std.
> zip
> signals
> outbuffer (there isn't even inbuffer, whee)
> boxer (I like it, but Variant seems to supersede it)
> cover (highly compiler specific, why is it in the stdlib?)
>
> Also, the following modules really belong into core:
>
> std.
> atomics (contains intrinsics for atomic asm instructions, right?)
> intrinsics
> variant (come on!)
> complex
> bind
> bigint
For bigint, only the low-level O(n^2) functions, I think. A bigint
implementation might use O(n lg n) fourier transforms for multiply when
the numbers get big enough -- that's far too heavyweight for the core, I
think. The low-level functions are almost intrinsics -- bigint add is
essentially the "add-with-carry" instruction, for example.
Also std.cpuid (without toString()).
All those modules (except complex, maybe) are things which you'd have to
rewrite when creating a new compiler, so I think using core for them is
reasonable.
> Next steps:
> - unify the C import modules
> - move modules like std.range into core (magically enables Tango to use it)
I think you'll find Tango eventually wants to use most of the new Phobos
-- you'd find everything in std gets moved into core! So I don't think
range belongs there (unless the range struct gets built into the compiler).
> - find a common I/O API (and put it into core), which wraps Tango/Phobos
> specific I/O APIs (personally, I'd prefer having something simple like
> std.stream [without the interfaces], instead of the clusterfuck in Tango)
>
> PS: It's fine if it's a third stdlib, as long as both Tango and Phobos
> people agree on it. It's too late anyway, and important, user-visible
> types like Thread are in core.
The I/O is difficult. I think it's a legitimate design difference
between Tango and Phobos -- we're probably stuck with it. I think it'd
be better to leave it aside, and concentrate on unifying the simple stuff.
More information about the Digitalmars-d
mailing list