Compile time function execution...

Joe Joe_member at pathlink.com
Sat Feb 17 13:23:06 PST 2007


Walter Bright wrote:
> 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.

This is exactly pertaining to compiler specific issues, but paralleling 
the above, why have "The total size of a static array cannot exceed 
16Mb. A dynamic array should be used instead for such large arrays." in 
the Array spec.  Isn't that kind of similar?  16Mb of static array data 
is a lot no doubt, but why put an arbitrary limit on it.  Unless it's a 
DMD specific thing.

Joe



More information about the Digitalmars-d mailing list