On Tuesday, 26 February 2013 at 16:45:08 UTC, Steven Schveighoffer wrote:
On Tue, 26 Feb 2013 11:09:48 -0500, Lars T. Kyllingstad <[email protected]> wrote:

I propose we only have two versions:

spawnProcess(string[] args, File stdin, etc...)
spawnProcess(string[] args, string[string] env, File stdin, etc...)

You'd use it like this:

spawnProcess(["prog"]);

That allocates.  I don't like that requirement.

'scope string[] args' should tell the compiler not to allocate.


At the very least there should be version which takes a simple string, an easy thing to wrap:

auto spawnProcess(string program, File stdin, etc...)
{
   return spawnProcess((&program)[0..1], stdin, etc...);
}

We should also consider a variadic solution. In tango, things were done with an object, so the arguments were set via one method/constructor, and the options (stdin, stdout, etc) were set via another. This allowed the great API of

setArgs(string[] ...)

Which supports

setArgs("progname", "arg1", "arg2")

and

setArgs("progname arg1 arg2".split())

without extra allocation. However, we have two conflicting parts to spawnProcess that would be optional -- the variadic arg list, and the optional redirected handles and configuration.

We could just go full-bore variadic...

I'd rather not.

Lars

Reply via email to