[comp.lang.lisp] Is Xerox PCL

jkh@pcsbst.UUCP (jkh) (08/02/89)

I've got what I think is the latest CLOS from Xerox (7/20/88 (beta)
 July 20th PCL), but I'm not sure. I just picked up the book "Object
Oriented Programming using CLOS" [By someone at Symbolics, I don't have
the book in front of me and have forgotten the author's name, sorry!])
and am wondering if this version of PCL is close enough to the book
to do all the examples/any other real work.

I just got KCL's funload() to work for object files on our sysV machine
and PCL is loading happily away. This brings up another question:

In KCL, there's a file called c/unixfasl.c which implements one of two
functions, depending on the setting of an SFASL macro. The first function,
called funload() (if SFASL is not defined), simply loads the contents of
a .o file and invokes the first function (which in kcl generated .o files is
a wrapper for all the other functions, so this makes sense). I've got
this function working fine on our SYSV system, so I can at least load PCL.
The second function, called faslink(), is a bit more of a mystery.
First off, it only seems to work on BSD systems. Second, it appears that
you can't have a "sys:fasl" function without it, which things like CLX
(which needs TCP support) seem to need. What exactly does faslink() do?
Why isn't funload() supported if you have faslink()? Does faslink() do
it all if you provide it? What's the difference between doing a (load "..")
on an object file and (fasl ...) [the ability to grab a particular
function, rather than the first?].

Inquiring minds want to know.

Has anyone done the faslink() stuff for systemV? I've got a working
ild for systemV if that helps..

				Jordan


-- 
--------
				Jordan Hubbard
				PCS Computer Systeme GmbH
				West Germany
	UUCP:			{uunet,decwrl}!pyramid!pcsbst!jkh
	ARPA:			jkh@violet.berkeley.edu

Hey! Leave that alone!

jeff@aiai.uucp (Jeff Dalton) (08/07/89)

In article <935@pcsbst.UUCP> jkh@meepmeep.pcs.com (Jordan K. Hubbard) writes:
>In KCL, there's a file called c/unixfasl.c which implements one of two
>functions, depending on the setting of an SFASL macro. 

The SFASL macro is part of AKCL.  The "standard" KCL doesn't have it.

>The first function, called funload() (if SFASL is not defined), simply
>loads the contents of a .o file and invokes the first function (which
>in kcl generated .o files is a wrapper for all the other functions, so
>this makes sense).

Actually, the function is called "fasload" in the KCL and AKCL I have.

>The second function, called faslink(), is a bit more of a mystery.
>First off, it only seems to work on BSD systems. 

That's because it uses the "-A" option to "ld".

>What exactly does faslink() do?

In standard KCL (I'm not sure about AKCL), it lets you load a ".o"
file and link in things from other ".o" files or from libraries.
This is not necessary when loading KCL compiled Lisp, but can be
necessary for loading compiled C code.

>Why isn't funload() supported if you have faslink()? 

In standard KCL, both are supported.  However, faslink is arguably
more general.

In AKCL, perhaps they are two different ways of getting the same
functionality?  

>What's the difference between doing a (load "..") on an object file
>and (fasl ...)

Well, load can load files that haven't been compiled yet.  Maybe
fasl can't.  And maybe fasl can let you specify libraries (which
load normally does not.)

But fasl seems to be an AKCL addition to KCL, and I haven't actually
used it or looked into what it does.

Jeff Dalton,                      JANET: J.Dalton@uk.ac.ed             
AI Applications Institute,        ARPA:  J.Dalton%uk.ac.ed@nsfnet-relay.ac.uk
Edinburgh University.             UUCP:  ...!ukc!ed.ac.uk!J.Dalton