Compile time function execution...

Walter Bright newshound at digitalmars.com
Thu Feb 15 21:53:15 PST 2007


janderson wrote:
> Walter Bright wrote:
>> Right now, the compiler will fail if the compile time execution 
>> results in infinite recursion or an infinite loop. I'll have to figure 
>> out some way to eventually deal with this.
> 
> Maybe you could allow the user to specify stack size and maximum 
> iteration per loop/recursion function to the compiler as flags (with 
> some defaults).   This way the user can up the size if they really need 
> it.  This would make it a platform thing.  That way a D compiler could 
> still be made for less powerful systems.

Whether you tell it to fail at a smaller limit, or it fails by itself at 
a smaller limit, doesn't make any difference as to whether it runs on a 
less powerful system or not <g>.

The C standard has these "minimum translation limits" for all kinds of 
things - number of lines, chars in a string, expression nesting level, 
etc. It's all kind of bogus, hearkening back to primitive compilers that 
actually used fixed array sizes internally (Brand X, 
who-shall-not-be-named, was notorious for exceeding internal table 
limits, much to the delight of Zortech's sales staff). The right way to 
build a compiler is it either runs out of stack or memory, and that's 
the only limit.

If your system is too primitive to run the compiler, you use a cross 
compiler running on a more powerful machine.

I have thought of just putting a timer in the interpreter - if it runs 
for more than a minute, assume things have gone terribly awry and quit 
with a message.



More information about the Digitalmars-d mailing list