Phobos packages a bit confusing

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Nov 29 14:07:16 PST 2009


dsimcha wrote:
> == Quote from Andrei Alexandrescu (SeeWebsiteForEmail at erdani.org)'s article
>> Walter and I discussed quite a few times the possibility of defining
>> std.all that publically imports all of std. My experiments show that a
>> short script importing std.all will compile slower, but not too slow,
>> compared to a script that only import a few modules.
> 
> Vote++.  This would be a nice little convenience when writing small scripts in D,
> which I actually do quite often because I already know where basic APIs like file
> I/O are in Phobos and I don't want to learn another API just for small scripts.
> This goes along with the scaling down thing I was talking about a few days ago.  A
> well-designed language and library should be good for both big projects (making
> complicated things possible) and small projects (making things simple).  std.all
> would be a trivial addition that wouldn't clash with anything else and would
> really help Phobos scale down better.

Sounds great. I'm even more encouraged by some brief measurement 
results. I timed dmd against this program:

void main(){}

Then against this program:

import std.stdio;
void main(){}

Then against this program:

import std.stdio;
void main(){}

For convenience of other testers I'm pasting std.all after this message.

The test machine is a 2.5 years old bottom-of-the-line Ubuntu laptop 
that seems to be in possession of the secret of immortality. Quiescent 
average run times:

* 0.23 seconds for the first program

* 0.64 seconds for the second program

* 0.98 seconds for the third program

I assume any program or script would have to include at least one 
module, and the marginal cost of including all other modules is low 
enough to be encouraging.

Andrei


module std.all;

public import std.algorithm;
public import std.array;
//public import std.atomics;
public import std.base64;
public import std.bigint;
public import std.bitmanip;
public import std.boxer;
public import std.compiler;
public import std.complex;
public import std.contracts;
public import std.conv;
public import std.cpuid;
public import std.cstream;
public import std.ctype;
public import std.date;
public import std.datebase;
public import std.dateparse;
public import std.demangle;
public import std.encoding;
public import std.file;
public import std.format;
public import std.functional;
public import std.getopt;
public import std.intrinsic;
public import std.iterator;
public import std.json;
//public import std.loader;
public import std.math;
public import std.md5;
public import std.metastrings;
public import std.mmfile;
public import std.numeric;
public import std.outbuffer;
public import std.path;
public import std.perf;
public import std.process;
public import std.random;
public import std.range;
public import std.regex;
public import std.regexp;
public import std.signals;
public import std.socket;
public import std.socketstream;
public import std.stdint;
public import std.stdio;
public import std.stdiobase;
public import std.stream;
public import std.string;
public import std.syserror;
public import std.system;
public import std.traits;
public import std.typecons;
public import std.typetuple;
public import std.uni;
public import std.uri;
public import std.utf;
public import std.variant;
public import std.xml;
public import std.zip;
public import std.zlib;



More information about the Digitalmars-d mailing list