[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Symbolics (or is it ILA?) C environment

    Date: Tue, 30 Jul 1991 21:09-0400
    From: barmar@Think.COM (Barry Margolin)
	Date: Tue, 30 Jul 1991 17:46 EDT
	From: connolly%livy@cs.umass.edu
	I'm curious as to people's opinions about the C environment that's
	been built for the Symbolics (I don't remember whose product this
	really is).

    It's Symbolics's.

	How is the function calling interface?  It is easy to call Lisp
	functions from C, and vice-versa?  What kind of a C library exists,
	i.e., does the C library reflect that on some popular version of Unix?
	Is there a plan afoot to implement some dialect of C++?

    Calling between Lisp and C isn't too bad for scalar data types.
    However, for some data types it can be a pain.  For instance, C pointers
    are passed as two arguments (an array and an offset), and passing a Lisp
    string to C requires converting it to an array of fixnums and adding the
    zero byte.  It would be nice if they had DEFINE-FOREIGN-FUNCTION and
    DEFINE-FOREIGN-CALLABLE macros like Lucid does, which take care of all
    the type conversions (I've got the beginnings of this written, but it
    only supports a few data types and few options).  It looks to me like
    they left these out because they thought that they were mostly used for
    linkage purposes, which isn't a problem on the Lispm.

The C pointer mechanism is lossy (as I recall) because it interfers with
VOID data type casting.  In my brief exposure to it there is no way to
type cast pointers, play with them and then type cast them back to
pointers.  Of course this is really questionable behaviour from a Lisp
hackers point of view, but I couldn't figure out any other (reasonable)
way to accomplish Lispy things in C.

    The library is just the functions required by the ANSI C specification.

    I seriously doubt there are any plans to enhance it.  It was mostly
    implemented before the C standard was finished, and I don't think it has
    been brought up to date with any changes that were made to the standard
    between the draft they worked from and the final standard.  There seem
    to have been few changes to it other than bug fixes since it was first