[Ecls-list] Moving towards 0.7
Juan Jose Garcia-Ripoll
jlr at mpq.mpg.de
Mon Oct 21 02:42:03 UTC 2002
I decided to postpone all bug fixing till the next release, scheduled by the
end of the week. The visible changes are small, but a lot of hard work had to
be done in order to raise the limit of CALL-ARGUMENTS-LIMIT. This means
- Functions may now receive more arguments (up to 536870911)
- For the moment the number of REQUIRED + OPTIONAL + KEYWORD arguments
is fixed to be under 64, but this limit can *NOW* be easily raised,
with minimal changes on src/cmp/*.lsp
The second point is rather important, because the ultimate motivation of this
work is to raise the number of slots per structure: due to the need of
creating constructors, the number of slots per structure is limited to
LAMBDA-PARAMETERS-LIMIT. As soon as LAMBDA-PARAMETERS-LIMIT is raised to be
as large as CALL-ARGUMENTS-LIMIT, someone may begin porting CLX ;-)
* Errors fixed:
- In compiled code UNWIND-PROTECT would procted also the exit form,
resulting in an infinite loop when the exit form fails.
* System design:
- The calling conventions have been changed. SI::C-ARGUMENTS-LIMIT
and LAMBDA-PARAMETERS-LIMIT are both 64. Up to C-ARGUMENTS-LIMIT
may be passed to a function using C calling conventions. If the
function is to retrieve more arguments, (for instance through a
&rest variable), this can be done, but then the arguments have to
be pushed on the lisp stack. This method allows us to raise the
CALL-ARGUMENTS-LIMIT up to MOST-POSITIVE-FIXNUM. From a users
point of view, there is no visible change, excep the fact that a
function may receive more arguments. For instance this works:
(APPLY #'LIST (MAKE-LIST 80))
- The function apply() has been replaced with cl_apply_from_stack().
The former took a pointer to the list of arguments. The latter
assumes that the last "narg" elements on the lisp stack are the
arguments of the function.
* Visible changes:
- New function SI:OPEN-UNIX-SOCKET-STREAM creates a two-way stream
attached to a unix socked (Unix sockets are pipes which programs
from the same computer may use to communicate with each other, and
they are either anonymous (not supported by ECL) or associated to
a file of the filesystem).
- New function SI:LOOKUP-HOST-ENTRY encompasses the C calls
gethostbyname() and gethostbyaddress() and it is used to guess the
address, aliases and hostname of a machine in the Internet (Currently
we only support AF_INET protocol).
--
Max-Planck-Institut fuer Quantenoptik +49/089/32905-127
Hans-Kopfermann-Str. 1, D-85748 www.arrakis.es/~worm
Garching b. Muenchen, Germany worm at arrakis.es
More information about the ecl-devel
mailing list