Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!husc6!cmcl2!nrl-cmf!ames!ucbcad!ucbvax!LF-SERVER-2.BBN.COM!jr From: jr@LF-SERVER-2.BBN.COM (John Robinson) Newsgroups: comp.emacs Subject: Re: parallel gemacs? Message-ID: <8711132317.AA07361@ucbvax.Berkeley.EDU> Date: Fri, 13-Nov-87 18:17:25 EST Article-I.D.: ucbvax.8711132317.AA07361 Posted: Fri Nov 13 18:17:25 1987 Date-Received: Sun, 15-Nov-87 10:57:02 EST References: <8711131614.AA09484@oxtrap.UUCP> Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: jr@BBN.COM Organization: The ARPA Internet Lines: 34 >> Can anyone verify the feasability of lack thereof of a parallel >> version of gnu-emacs? What I want to know is, is there a good reason >> that eval, map*, etc. cannot be done in parallel? Like, does the >> existing lisp code presume sequential execution? Well, this depends on the e-lisp "language definition" (which of course doesn;t really exist). And, for the C code, there is most probably a necessity that things generally happen sequentially. Lisps of various flavors do provide some functions that make no guarantees about their evaluation order. (let ...) versus (let* ...) for example. Whether programmers have necessarily followed the rules in their use of these constructs is another matter. Parallel garbage collection is an even nastier matter. Master's thesis material at least (but don't let this daunt you, please!). BBN Advanced Computers is working on a parallel Lisp which is based on MIT scheme; scheme's tighter semantics make it better for parallel implementation for many of the same reasons it is more tractable for compilation. Maybe you could start with the scheme that FSF distributes. There are a lot of different ways you can think about for parallelizing Lisp. I believe ACI is using the lazy evaluation model - the result of an expr need not be known until it is needed by someone else. This lets you parallelize in, for example, picking up function arguments. The trouble, of course, is in side effects. Again, this is why scheme's semantics are so much of a help, in this case because they force you to write code that will execute properly in a parallel environment. /jr jr@bbn.com or jr@bbn.uucp