On 13/12/11 09:13, Steven Schveighoffer wrote:
On Mon, 12 Dec 2011 17:08:53 -0500, Bane <branimir.milosavlje...@gmail.com> wrote:

I have been playing with std.process (D2) lately, and have 2 suggestions and more or less tested code if somebody other than my self have use for it.

One is shell() function (not mentioned in the docs, curious), I see it can be made more efficient on Windows. It executes shell command and returns standard output as string. Current implementation do it by piping stdout to temporary file on disk and reading that file back. Using CreateProccess Windows API it can do same job 3 times faster and remove need for temporary files and disk writes. I think that is beneficial gain for some applications.

Other is fork-exec implementation eg. starting a program using command line and detaching it from parent, so it continues to run after parent is dead. On Posix it is implemented using fork() and exec() calls, on Windows using CreateProcess.

There is a completely revamped version of std.process. It is being held up right now because DMD on windows depends on DMC for it's C runtime, and DMC has issues supporting pipes. I have recently opened a pull request for Walter to merge, I'm going to ping him about it right after 2.057 is released.

For more info, see the docs Lars posted here:

http://kyllingen.net/code/ltk/doc/process.html

Once the DMC issue is fixed, you should see this improvement getting much more attention. It's very low hanging fruit.

-Steve

I took a look at the link, and it looks very nice.

I am currently trying to port an application over from Linux to Windows and the lack of wait(pid) is currently a blocker.

--
Graham St Jack

Reply via email to