Path: utzoo!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!ucbvax!bloom-beacon!POSTGRES.BERKELEY.EDU!dcmartin
From: dcmartin@POSTGRES.BERKELEY.EDU (David C. Martin)
Newsgroups: comp.windows.x
Subject: Re: fundamental X performance (extensibility)
Message-ID: <8807062022.AA06165@limbo.berkeley.edu>
Date: 6 Jul 88 20:22:20 GMT
References: <8807031142.AA04351@rice-chex.ai.mit.edu>
Sender: daemon@bloom-beacon.MIT.EDU
Organization: University of California at Berkeley - Dept of EECS/CS Division
Lines: 37

An interesting point of view ... have you considered the possibilities of
making the connection to the backend (server) done via a byte-code system
ala emacs which would provide the following:

a) an encapuslation of public server functions (ala Xlib plus whatever the 
   designers of the server deemed public) for a LISP bytecode interpreter?

b) extensions via the down-loading of either source or compiled forms of
   the user-defined code written against this public interface.

c) portability of (b) and without the need of having a homogenous file
   system (although a distributed DBMS would be a nice addition)

d) RPC availability of (a) to allow local debugging of (b)

e) local libraries (ala Xlib) to provide the interface for (a), (b) and (d)

Granted that no one wants to code against PostScript, although PLisp (from
U of Arizona) makes this easier, some extension language should be provided.
I know many people will immediately say "argh! interpeted!" but this is
already the case for PostScript for printers (I don't know enough about
Display PostScript or NeWS to comment on them) and GNU emacs.  Given that
a binding could be established between something ala ELisp and the public
server functions, and allowing a programmer to reach deeper into the server
implementation to perform specific optimizations, this type of organzation
might very well provide the extensibility that is required.

In addition, if the public server code was written using c++, then some
object-oriented techniques might be avaiable via the ELisp type bytecode
interpreter.

Please keep in mind that I am just spinning my wheels, and not trying to
say that I have some answer, this solution is just something that I have
been kicking around.

Flames and comments gratefully accepted :-)

dcm