On 9/15/10 6:56 AM, 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

Done.

         std.boxer      - superseded by std.variant

Done.

         std.contracts  - superseded by std.exception

Not yet.

         std.cstream    - superseded by std.stdio.File

Not yet - waiting for the new streams.

         std.demangle   - superseded by core.demangle

There's no http://www.digitalmars.com/d/2.0/phobos/core_demangle.html. Walter, Sean?

         std.iterator   - superseded by std.range

That's been eliminated for a while. Looks like Walter didn't update std.ddoc before generating the docs. Walter?

         std.openrj     - obscure format, better to use std.json

Can't find it.

         std.perf       - superseded by StopWatch

Can't find it.

         std.regexp     - superseded by std.regex

Deprecated.

         std.stream     - ranges are the way to go

Wating for the new streams.

         std.syserror   - superseded by std.windows.syserror

Can't find it.

         std.c.*        - superseded by core.stdc.* and core.sys.*

Walter, Sean? Are we ready for this step?

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?)

If anyone wants to work on this, please discuss.

And finally, some renaming suggestions (which were actually posed by
Andrei):

         std.conv ->  std.convert
         std.stdio ->  std.io

I guess we can leave these alone.

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

Looks good to me. There's no std.osx to complement the other two.


Andrei
_______________________________________________
phobos mailing list
phobos@puremagic.com
http://lists.puremagic.com/mailman/listinfo/phobos

Reply via email to