[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