[phobos] Phobos has way too many modules

Lars Tandle Kyllingstad lars at kyllingen.net
Wed Sep 15 06:25:31 PDT 2010


On Wed, 2010-09-15 at 22:08 +0900, Masahiro Nakagawa wrote:
> On Wed, 15 Sep 2010 20:56:14 +0900, Lars Tandle Kyllingstad  
> <lars at kyllingen.net> wrote:
> 
> > I said in an earlier e-mail that I think std.file, std.path, and
> > std.stdio should remain separate modules.  However, I do think that, for
> > a library with a flat module hierarchy, Phobos has acquired way too many
> > modules.  Some of them should (and will) be removed, and some could be
> > merged.
> 
> I agree.
> 
> > The following are my suggestions for how to trim the Phobos module list
> > a bit.  At the bottom I'll show the resulting module list.
> >
> >
> > Modules which could be removed, most of them *right now*, because they
> > are superseded by other modules or built-in functionality:
> >
> >         std.bind       - use lambdas or nested functions instead
> >         std.boxer      - superseded by std.variant
> >         std.contracts  - superseded by std.exception
> >         std.cstream    - superseded by std.stdio.File
> >         std.demangle   - superseded by core.demangle
> >         std.iterator   - superseded by std.range
> >         std.openrj     - obscure format, better to use std.json
> >         std.perf       - superseded by StopWatch
> >         std.regexp     - superseded by std.regex
> >         std.stream     - ranges are the way to go
> >         std.syserror   - superseded by std.windows.syserror
> >         std.c.*        - superseded by core.stdc.* and core.sys.*
> 
> The content of std.stdint is "public import core.stdc.stdint;" only.
> I think this module doesn't need.

Oh, I didn't know that.  Then it should go too.


> > Modules for which there is no documentation on the D home page, and
> > which I suspect nobody are using:
> >
> >         std.loader
> >         std.stdarg
> >         std.typelist
> >
> > Modules which can be merged into a single one, possibly after
> > substantial/complete rewrites:
> >
> >         std.compiler + std.cpuid + std.system (= std.sysinfo?)
> >         std.ctype + std.uni (= std.character?)
> >         std.date + std.dateparse + std.gregorian + std.stopwatch
> >           (= std.datetime?)
> >         std.encoding + std.utf (= std.encoding?)
> >         std.socket + std.socketstream (= std.socket (or std.net?))
> >         std.typecons + std.typetuple (= std.types?)
> 
> std.socket should be divided into std.socket, std.event and  
> std.net(std.dns?).
> I said this point in "Breaking changes for std.socket improvement".

I don't mind splitting modules either, as long as it is a sensible
split. :)  I agree that std.event deserves its own module.  But what
would you put in std.socket, and what would you put in std.net?

-Lars



More information about the phobos mailing list