[phobos] Phobos has way too many modules
Lars Tandle Kyllingstad
lars at kyllingen.net
Thu Sep 16 06:30:21 PDT 2010
I disagree, I like the flat hierarchy.
And just to clarify my earlier e-mail, for which I may have chosen a bad
subject: I do not think that the number of modules in Phobos is too
high in general. I think it has too many *obsolete* modules, and too
many modules with very limited functionality.
If we got rid of the cruft that has been accumulating, and merge some of
the smaller modules into larger ones, Phobos would seem a lot less
unwieldly.
-Lars
On Thu, 2010-09-16 at 14:54 +0200, Jacob Carlborg wrote:
> I think it's time for Phobos to start using sub packages and drop the flat module hierarchy.
>
> On 15 sep 2010, at 13:56, Lars Tandle Kyllingstad 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.
> >
> > 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.*
> >
> > 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?)
> >
> > And finally, some renaming suggestions (which were actually posed by
> > Andrei):
> >
> > std.conv -> std.convert
> > std.stdio -> std.io
> >
> >
> > All this gives us the following, nice and short (well... shorter, at
> > least) module list:
> >
> > std.algorithm
> > std.array
> > std.base64
> > std.bigint
> > std.bitmanip
> > std.character
> > std.complex
> > std.concurrency
> > std.container
> > std.convert
> > std.datetime
> > std.encoding
> > std.exception
> > std.file
> > std.format
> > std.functional
> > std.getopt
> > std.intrinsic
> > std.io
> > std.json
> > std.math
> > std.md5
> > std.metastrings
> > std.mmfile
> > std.numeric
> > std.outbuffer
> > std.path
> > std.process
> > std.random
> > std.range
> > std.regex
> > std.signals
> > std.socket
> > std.stdint
> > std.string
> > std.sysinfo
> > std.traits
> > std.types
> > std.variant
> > std.xml
> > std.zip
> > std.linux
> > std.windows
> >
> >
> > Just something to think about.
> >
> > -Lars
> >
> > _______________________________________________
> > phobos mailing list
> > phobos at puremagic.com
> > http://lists.puremagic.com/mailman/listinfo/phobos
>
More information about the phobos
mailing list