The new std.process is ready for review
Steven Schveighoffer
schveiguy at yahoo.com
Tue Feb 26 10:24:08 PST 2013
On Tue, 26 Feb 2013 12:03:51 -0500, Lars T. Kyllingstad
<public at kyllingen.net> wrote:
> 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
>> <public at kyllingen.net> wrote:
>>> spawnProcess(["prog"]);
>>
>> That allocates. I don't like that requirement.
>
> 'scope string[] args' should tell the compiler not to allocate.
That's not how it works. The expression [<anything>] allocates.
>> 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.
Did that apply to all the statements above, or just the variadic part?
-Steve
More information about the Digitalmars-d
mailing list