Hi all,
I noticed this morning that the CVS implementation and notes for CLISP now
state the call-arguments-limit is 4096 (it used to be 2^32 on 32-bit
systems--but realistically less without encountering default stack
limitations). I prefer a call-arguments-limit to be like a reliable stack:
only limited by available memory taking into account realistic hardware
constraints. In others words a limit one can usually just ignore.
In 2002 I wrote:
<http://groups.google.co.nz/groups?selm=aiv5ec%24181a16%241%40ID-105510.news.dfncis.de>
"I don't mind that I might break some very old Lisp implementations by
supplying a large number of arguments to a function. I just tested apply
on a list with 100,000 elements without a problem"
Today similar code blows CLISP's stack in its default configuration:
$ clisp -norc -q
[1]> (length (apply #'concatenate 'string
(loop for x from 1 to 100000 collect "1")))
*** - Lisp stack overflow. RESET
But smaller numbers lead to a more descriptive error message:
[2]> (length (apply #'concatenate 'string
(loop for x from 1 to 4096 collect "1")))
*** - APPLY: too many arguments given to CONCATENATE
(Starting CLISP with -m 10MB is enough to avert the stack overflow and
obtain the the same error message).
Regards,
Adam