grant@gouche.UUCP (Grant Munsey) (03/20/91)
I am about to start working on a project that will use Soar5 from CMU. Soar is ~44k lines of Common Lisp code. I would like to use a NeXT slab w/20mb of memory for this work. Is anybody out there using NeXT and Allegro under NeXT OS 2.0? Is the complete version of Allegro 3.1 for Next 2.0 shipping? Does it have any hooks into NIB/Objective C. Just looking for some confirming evidence that I would be able to use the NeXT/Allegro combo effectivly. Thanks, -- Grant Munsey, Mainticore, Inc. (408) 733-3838 grant@gouche.portal.com or {uunet!opusys,decwrl!apple!portal}!gouche!grant
layer@Franz.COM (Kevin Layer) (03/22/91)
In article <210@gouche.UUCP> grant@gouche.UUCP (Grant Munsey) writes:
Is the complete version of
Allegro 3.1 for Next 2.0 shipping? Does it have any hooks into
NIB/Objective C.
While you want a user's testimony of Allegro CL on the NeXT, I can add
that ACL on the NeXT is complete with respect to ACL 3.1 available on
other machines. In addition to being complete, there are some nice
additional features of ACL on the NeXT:
1. Due to Mach, running an image created dumplisp (saving the running
image to disk for later execution in the "same" state) is
particularly efficient at start because we use the memory mapping
features of the Mach-O (object) file format. On non-Mach systems
we must "shuffle" parts of the heap to their final location instead
of having them mapped there from the object file itself.
2. Also due to Mach, a foreign file can be reloaded without removing
the entry points that clash. So,
(load "foo.o")
(load "foo.o")
will "unmap" foo.o before the second load.
3. There is an interface to Objective-C, which offers the ability to
dynamically load Objective-C object files into ACL and to define
Objective-C classes and methods. Below is an example application,
which creates a window that reads expressions from the users,
evaluates the results and prints the *Lisp* results. There is a
`nib' file which is not included here (it is on the Allegro CL
distribution, however).
;; Evaluator
;; A very simple class and set of method definitions which demonstrates
;; the high interactiveness between lisp and an interface built by the
;; interface builder.
;; Written by Charley Cox, Franz Inc. Aug, 1989
;;
;; When this file is loaded into lisp, a window with two text forms,
;; a button, and a sample form cell is brought up. One can type
;; forms into the input form, and see what lisp returns through the
;; output form. The output form is not bound to *standard-output*.
;; Thus, *standard-output* will, by default, be the terminal running lisp.
;;
;; Hitting return in the input form is equivalent to clicking on the
;; button (this example is heavily inspired by the sample
;; project in the NeXT chapter on using the interface builder).
;;
;; Some things to play with are to see what happens when you type the
;; following things into lisp:
;; self
;; (break) ;; This enters a lisp break loop--to continue with the
;; ;; application, type `:cont' to the lisp. Do not type
;; ;; `:res' or (reset) since that throws you out of the
;; ;; application.
;;
;; The following (print-* ...) functions will print to standard output
;; and not to the display window.
;;
;; (print-class-ivars (send self "class"))
;; ;; This should print out the three outlets that were designed
;; ;; by the interface builder. They are outputForm, inputForm,
;; ;; and testForm. testForm is for the TestForm Cell.
;; (print-class-methods (send (iv "testForm") "class"))
;; ;; This prints the methods available to the TestForm Cell.
;; ;; One of these methods should be `setEnabled:'.
;; (send (iv "testForm") "setEnabled=" 0)
;; ;; This `dims' the test form cell. Calling "setEnabled="
;; ;; with argument 1, restores it.
;; (send (iv "testForm") "setStringValue=" (string-to-char* "Hello, There"))
;; ;; This displays the string in TestForm's window.
;; $aclHeader: Evaluator.cl,v 1.1 89/08/28 18:51:30 layer Exp Locker: layer $
(in-package :evaluator)
(require :objc)
(require :foreign)
(use-package :excl)
(use-package :objc)
(use-package :appkit)
(use-package :foreign-functions)
(def-objc-class Evaluator (Object)
((outputForm :type :id)
(inputForm :type :id)
(testForm :type :id)))
(def-objc-method (setOutputForm= Evaluator :id) ((anObject :id))
(setf (iv "outputForm") anObject)
self)
(def-objc-method (setInputForm= Evaluator :id) ((anObject :id))
(setf (iv "inputForm") anObject)
self)
(def-objc-method (setTestForm= Evaluator :id) ((anObject :id))
(setf (iv "testForm") anObject)
self)
(def-objc-method (eval= Evaluator :id) ((sender :id))
(let* ((raw-input-string (send (iv "inputForm") "stringValue"))
(input-string (char*-to-string raw-input-string)))
(send (iv "inputForm") "selectText=" sender)
(send (iv "outputForm")
"setStringValue="
(string-to-char*
(write-to-string
(eval
(read-from-string input-string)))))))
(format t "Starting application...~%")
(format t "making application...") (force-output)
(make-application "eval")
(format t "loading nib file...") (force-output)
(send NXApp "loadNibFile=owner="
(namestring (merge-pathnames "objc/Evaluator.nib"
excl::*library-pathname*))
NXApp)
(format t "running...")
(run-application)
(format t "done~%")
--
Kevin Layer, Franz Inc. 1995 University Avenue, Suite 275
layer@Franz.COM (internet) Berkeley, CA 94704
uunet!franz!layer (uucp) Phone: (415) 548-3600; FAX: (415) 548-8253
isbell@ucscf.UCSC.EDU (Art Isbell) (03/22/91)
In article <LAYER.91Mar21101508@vapor.Franz.COM> layer@Franz.COM (Kevin Layer) writes: >[3 plusses for running ACL on NeXT] I would be interested in having Kevin's objective opinion on how the NeXT platform compares with other platforms that run ACL. Kevin has provided a few nice plusses, but what about negatives? How is ACL's performance on NeXT? What is the minimum RAM configuration recommended? -- _____ ____ Art Isbell |\ | | | | \ 315 Moon Meadow Lane NeXT Registered Developer | \ | ___ |____| | | Felton, CA isbell@ucscf.UCSC.EDU | \ | |___| | \ | | 95018-9442 (408)438-4736(B) | \| |___ | \ |___/ (408)335-1154(H)
mikel@Apple.COM (Mikel Evins) (03/23/91)
In article <13720@darkstar.ucsc.edu> isbell@ucscf.UCSC.EDU (Art Isbell) writes: > >In article <LAYER.91Mar21101508@vapor.Franz.COM> layer@Franz.COM (Kevin Layer) writes: >>[3 plusses for running ACL on NeXT] > >I would be interested in having Kevin's objective opinion on how the NeXT >platform compares with other platforms that run ACL. Kevin has provided a few >nice plusses, but what about negatives? How is ACL's performance on NeXT? >What is the minimum RAM configuration recommended? My dealings with Franz suggest that Kevin cannot comment on your question. Franz has a policy of not comparing their performance on various hardware, because such comparisons could be construed as constituting endorsements of particular vendors, and so could be seen as conflict of interest issues, or at least piss off some of the vendors they support. I have benchmarks for various lisps on various platforms, but I got some of them on the condition that I not distribute them publicly. On the basis of what I know, I would describe ACL on the NeXT as adequate, but not stellar. The fastest Lisp I know of right now is Lucid on the SPARCStation 2 (actually, Lucid on the Apollo DN 10000 is probably faster, but the price range is different, and the future of the hardware is unclear). (This is assuming stock hardware, not Lisp machines). If you like, I can run the Gabriels myself if I ever get my upgrade copy of ACL for my 040 cube, and mail you the results.
mikel@Apple.COM (Mikel Evins) (03/23/91)
In article <CNH5730.91Mar22172650@maraba.tamu.edu> cnh5730@maraba.tamu.edu writes: >In article <50632@apple.Apple.COM> mikel@Apple.COM (Mikel Evins) writes: > [... stuff deleted ...] > ACL on the NeXT as adequate, but not stellar. The fastest > Lisp I know of right now is Lucid on the SPARCStation 2 > [... stuff deleted ...] > >This is a comparison of a 28 MIPS machine with a 15 MIPS machine. Sorry, I didn't mean to imply that the comparisons were absolute. You are, of course, correct. ACL still doesn't look stellar to me for a machine of the NeXTStation's class. It's okay, though, and the alternatives are relatively few.
layer@Franz.COM (Kevin Layer) (03/29/91)
It is true that we have a policy of not comparing machines for the reasons given by mikel@Apple.COM. I will say, however, that the virtual memory system on the NeXT is quite sophisticated and I believe it utilizes memory and it pages quite efficiently. So, 16mb has been quite adequate in my use. Below are results of running the Stanford Lisp Timing Project benchmarks on an 040 NeXTstation machine with 16mb of memory and local disk. They were not run in single-user mode, but there wasn't much going on at the time. Non-GC GC Total Name User Sys User Sys User Sys Real boyer 2.17 0.02 0.33 0.00 2.50 0.02 2.51 browse 3.37 0.08 0.17 0.00 3.53 0.08 3.61 dderiv 0.68 0.02 0.02 0.00 0.70 0.02 0.73 deriv 0.62 0.02 0.02 0.00 0.63 0.02 0.68 destru 0.23 0.00 0.00 0.00 0.23 0.00 0.24 traverse-init 1.20 0.00 0.00 0.00 1.20 0.00 1.22 traverse-run 8.28 0.03 0.00 0.00 8.28 0.03 8.33 div2-iter 0.18 0.00 0.00 0.00 0.18 0.00 0.19 div2-recur 0.38 0.02 0.00 0.00 0.38 0.02 0.40 triang 25.72 0.05 0.00 0.00 25.72 0.05 25.84 tak 0.10 0.00 0.00 0.00 0.10 0.00 0.10 takl 0.55 0.00 0.00 0.00 0.55 0.00 0.57 takr 0.23 0.00 0.00 0.00 0.23 0.00 0.24 ctak 0.30 0.00 0.00 0.00 0.30 0.00 0.30 stak 0.55 0.00 0.00 0.00 0.55 0.00 0.57 fft 0.68 0.00 0.00 0.00 0.68 0.00 0.68 frpoly-r2-10 0.35 0.02 0.00 0.00 0.35 0.02 0.37 frpoly-r3-10 0.27 0.02 0.00 0.00 0.27 0.02 0.28 frpoly-r-15 0.80 0.02 0.00 0.00 0.80 0.02 0.85 frpoly-r3-15 1.92 0.02 0.05 0.00 1.97 0.02 2.00 frpoly-r2-15 3.33 0.03 0.05 0.00 3.38 0.03 3.41 puzzle 1.40 0.00 0.00 0.00 1.40 0.00 1.40 fprint 0.20 0.03 0.00 0.00 0.20 0.03 0.30 fread 0.73 0.02 0.00 0.00 0.73 0.02 0.77 tprint 0.30 0.02 0.00 0.00 0.30 0.02 0.32 -- Kevin Layer, Franz Inc. 1995 University Avenue, Suite 275 layer@Franz.COM (internet) Berkeley, CA 94704 uunet!franz!layer (uucp) Phone: (415) 548-3600; FAX: (415) 548-8253