On Fri, Jul 12, 2013 at 3:36 PM, Peter Alexander <span dir="ltr"><<a href="mailto:peter.alexander.au@gmail.com" target="_blank">peter.alexander.au@gmail.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Friday, 12 July 2013 at 20:42:50 UTC, Tofu Ninja wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So I had an idea recently, wouldn't it be cool to have the ability to call an executable at compile time and capture its output.<br>
</blockquote>
<br></div>
How long until D compilers are able to read mail? :-)<br>
<br>
There's many obvious applications of this proposed feature, but I say such things should be delegated to the build process. Just run those executables using a makefile, or whatever build system you use.<br>
<br>
If you need compile time inputs from your D code then just run a separate build to extract them. Yes it's more work and less convenient, but I think we need to be careful with how much is added to the D compilers. We don't want to turn them into operating systems.<br>

</blockquote></div><div><br></div>regarding added complexity: the only thing this adds is 1 function (calling an executable, with option to redirect stdin/out/err). And yes, that could read mail as you joked if the user called such a program inside his D function, but that would require ZERO change in compiler, apart from that ONE function to support calling external programs. <div>
<br></div><div>we need this for the same reason we need CTFE: try using makefiles to achieve what CTFE does. Using a separate build is way less convenient and doesn't allow complex interactions, as it requires the process to be sequential: do other stuff THEN compile with dmd. Whereas integrating it inside compilation would allow interdependent computations offloaded to an external process.</div>
<div><br></div><div>With makefile-like build, you'd have to have potentially many layers of interaction between compiling and calling external programs. Not only would that be much slower (dmd has overhead), but would also require parsing files each time.</div>
<div><br></div><div><br></div>