[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: UUOLINKS and numbers...

Some notes on JONL's message:
The UUOLINKS scheme was introduced into MacLISP in 1973 or thereabouts.
JONL's paper "A Historical Perspective on MacLISP" in Proc. 1977
MACSYMA Users Conference (181-189) states that it was in 1973 and that
the idea was indeed copied from LISP 1.6.  I don't remember ever being
told that, but the idea was certainly developed collaboratively, so
LISP .6 may indeed have inspired the idea.  I remember distinctly,
however, that the primary reason I was to implement it was to allow
MACSYMA to have both speed and debuggability.  The difficulty was that,
prior to the UUOLINKS hack, links to subroutines could indeed be "snapped",
but this was done by clobbering the UUO linking instruction in the code
with a PUSHJ instruction.  This clobbering was not easy to reverse,
and also required that the code be writable.  Now, MACSYMA was (and is)
a huge system running on a time-shared, paging operating system (ITS),
and for system efficiency it was imperative that as many pages of
MACSYMA be read-only as possible, so that such pages could be shared
among the multiple running instances of MACSYMA to improve paging
performance.  Before UUOLINKS, the solution was to cause all the links
to be clobbered, then make all the code pages read-only.  This meant
that bugs encountered by a MACSYMA user were very difficult to track
down, because the snapped links left no debugging information around.
With the UUOLINKS scheme, all the code could still be read-only,
and the links could be dynamically snapped and unsnapped for
speed and debugging, respectively.

For information about the fast arithmetic stuff, see my paper
"Fast Arithmetic in MacLISP" (Proc. 1977 MACSYMA Users Conference,
and also MIT AI Memo 421).