Subject: Re: Unification
From: (Rob Warnock)
Date: 21 Jun 2001 03:23:28 GMT
Newsgroups: comp.lang.lisp
Message-ID: <9grpbg$i85as$>
David Thornley <> wrote:
| So, if you want to have a standard socket API, write FFI definitions
| for every CL system you wish to include.  It's more work, but
| it's just as effective as the C way of doing it.  These will
| also use the same library.  (Alternatively, write a system that
| takes a list of C prototypes and the name of a CL system, and
| produces a set of function definitions for that CL.  Poof!
| Instant C-style compatibility!)

It's not that simple, since you almost certainly want (for example)
the "select()" system call to properly interact with any threading
that's built into your CL, and *that's* not likely to be a "small
matter of FFI".

By "select() properly interact with threading", I mean that if one
thread in your Lisp program does a blocking read on a terminal and
another does a blocking read on a socket, "the right thing" happens
(that is, the correct thread immediately wakes and completes the read)
regardless of which device produces data first. Getting this right across
multiple implementations if you've written the socket access through
an FFI (but you're using the built-in file I/O for terminals!) is
likely to be... well... interesting.


Rob Warnock, 31-2-510		<>
SGI Network Engineering		<> [until 8/15]
1600 Amphitheatre Pkwy.		Phone: 650-933-1673
Mountain View, CA  94043	PP-ASEL-IA

[Note: and aren't for humans ]