From: Kemi Jona
Subject: TCP communication between Lisps
Date: 
Message-ID: <6641@accuvax.nwu.edu>
I'm interested if anyone out there has written some code (that they
are willing to share) for Lucid 3.0 on a Sun-4 that will open a TCP
network connection to another Lisp process and allow strings (or
whatever) to be sent back and forth.

What I have in mind is some sort of master-slave situation where one
Lisp could perform a call of the form:

	(remote-eval <forms>)

and <forms> would be sent to the remote Lisp to evaluate.  I have some
code written for Mac Allegro CL that (claims) to create a type of lisp
stream called tcp-stream, which could then be used in the normal fashion.

Any information would be appreciated.

--Kemi

From: Chet Murthy
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <40134@cornell.UUCP>
····@ils.nwu.edu (Kemi Jona) writes:

>I'm interested if anyone out there has written some code (that they
>are willing to share) for Lucid 3.0 on a Sun-4 that will open a TCP
>network connection to another Lisp process and allow strings (or
>whatever) to be sent back and forth.

>What I have in mind is some sort of master-slave situation where one
>Lisp could perform a call of the form:

>	(remote-eval <forms>)

>and <forms> would be sent to the remote Lisp to evaluate.  I have some
>code written for Mac Allegro CL that (claims) to create a type of lisp
>stream called tcp-stream, which could then be used in the normal fashion.

>Any information would be appreciated.

>--Kemi

The best way to do this that I know of is to use the SUNRPC stuff.
Unfortunately, the only vendor I know of that has SUNRPC for LISP is
International Lisp Associates's ILA-RPC/NFS package, and that's for
LISP machines.  I don't know if they sell a package for UNIX LISPs.
Does anybody know?

--chet--

	--chet--
	······@cs.cornell.edu
From: David Brownell
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <1799@east.East.Sun.COM>
······@algron.cs.cornell.edu (Chet Murthy) writes:
> ····@ils.nwu.edu (Kemi Jona) writes:
 
> >What I have in mind is some sort of master-slave situation where one
> >Lisp could perform a call of the form:
> 
> >	(remote-eval <forms>)
> 
> >and <forms> would be sent to the remote Lisp to evaluate.

One problem with a "remote-eval" primitive is that it's got an implicit
argument of the entire runtime environment:  it presumes tight coupling.
Likewize, what about those compiled/binary objects that would have no
meaning for another LISP from a different vendor on different hardware.

To overgeneralize, there are two distribution models:  tight coupling
(shared memory, "remote-eval" can work) and loose coupling (where
message passing is the model).  RPC is a restricted form of message
passing (request followed by response) which provides namespaces for
the messages (to standardize interpretation and message contents) and
endpoints (allowing authentication).  If you're building on top of
TCP, you should use the message passing model.
 
> The best way to do this that I know of is to use the SUNRPC stuff.
> Unfortunately, the only vendor I know of that has SUNRPC for LISP is
> International Lisp Associates's ILA-RPC/NFS package, and that's for
> LISP machines.  I don't know if they sell a package for UNIX LISPs.
> Does anybody know?

I'm told that ILA has since sold this to Symbolics, and are now
working mostly on CLIM.  I had reason to check this out recently
(I was curious about this a few weeks ago!) and there doesn't seem
to be an RPC package for at least Lucid.

David Brownell			··@east.sun.com.
Sun Desktop Systems Software	(508) 671-0348
"We'll get to ISO, Mars, and Pluto ... not necessarily in that order."
From: Barry Margolin
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <35811@think.Think.COM>
In article <····@accuvax.nwu.edu> ····@ils.nwu.edu (Kemi Jona) writes:
>I'm interested if anyone out there has written some code (that they
>are willing to share) for Lucid 3.0 on a Sun-4 that will open a TCP
>network connection to another Lisp process and allow strings (or
>whatever) to be sent back and forth.

It should be pretty straight-forward to implement this using the foreign
function interface to call the socket library.  This will allow you to open
Unix streams to network connections.  Then MAKE-LISP-STREAM can be used to
make a Lisp stream that interfaces to the Unix stream.

The most tedious part will be writing the Lisp descriptions of the C
structures that must be passed to the socket library.
--
Barry Margolin, Thinking Machines Corp.

······@think.com
{uunet,harvard}!think!barmar
From: S. Mujica
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <MUJICA.90Apr21021730@ra.cs.ucla.edu>
on 21 Apr 90 05:29:55 GMT,
······@think.com (Barry Margolin) said:
> References: <····@accuvax.nwu.edu>
> In article <····@accuvax.nwu.edu> ····@ils.nwu.edu (Kemi Jona) writes:
>>I'm interested if anyone out there has written some code (that they
>>are willing to share) for Lucid 3.0 on a Sun-4 that will open a TCP
>>network connection to another Lisp process and allow strings (or
>>whatever) to be sent back and forth.

> It should be pretty straight-forward to implement this using the foreign
> function interface to call the socket library.  This will allow you to open
> Unix streams to network connections.  Then MAKE-LISP-STREAM can be used to
> make a Lisp stream that interfaces to the Unix stream.

I have a foreing function interface that we use to implement remote
evaluation and broadcast methods in CLOS.  I will make it available
for anonymous ftp from ftp.cs.ucla.edu.  There is no documentation but
it should be pretty straightforward to use.

You should get the file pub/lisp-remote-eval.tar.Z.

Fixes and comments are welcome.

--
Sergio Mujica		······@cs.ucla.edu
Computer Science Department, UCLA
From: Andrew L. M. Shalit
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <ALMS.90Apr21164341@brazil.cambridge.apple.com>
In article <····@accuvax.nwu.edu> ····@ils.nwu.edu (Kemi Jona) writes:


   What I have in mind is some sort of master-slave situation where one
   Lisp could perform a call of the form:

	   (remote-eval <forms>)

You might try contacting a company called 'symbiotics', located in
Cambridge, MA.  I don't have their phone number handy, but they
should be listed in information in the 617 area code.

  -andrew
From: Andy Freeman
Subject: Re: TCP communication between Lisps
Date: 
Message-ID: <1990Apr23.184915.27841@Neon.Stanford.EDU>
In article <····@accuvax.nwu.edu> ····@ils.nwu.edu (Kemi Jona) writes:
>   What I have in mind is some sort of master-slave situation where one
>   Lisp could perform a call of the form:
>
>	   (remote-eval <forms>)

A number of lisp implementations (such as lucid) include some facility
for running another program and reading and writing strings to/from
it.  If rsh is available, this can be used to implement remote
evaluation.  (Rsh will run other programs, like lisp, on the other
end, and it handles all of the communication.)

-andy
-- 
UUCP:    {arpa gateways, sun, decwrl, uunet, rutgers}!neon.stanford.edu!andy
ARPA:    ····@neon.stanford.edu
BELLNET: (415) 723-3088