Lisp Machine System Release 99 Notes

System 99 is nigh!! Beware the coming of system 99!
Who knows what microcode version it will use, but
it will be  320. (For the CADR)  (For the Lambda, it's XXX)

Files compiled in System 98 will probably run in System 99.
Files compiled in System 99 will probably not run in System 98. Stay tuned.

CADR Users:

Using some as-yet-unwritten magic, it will be possible to debug System 99 from
System 98 and perhaps also System 97, but not any earlier systems.
System 99 can debug all earlier systems. Yow!

Contents of the rest of this file:

   Using Common Lisp in the MIT Lisp Machine System.
   Incompatible Changes
   Compatible Lisp Programming Changes
   Window System Changes
   User Interface Changes
   Editor Changes
   Network Changes
   Site option Changes


Using Common Lisp in the MIT Lisp Machine System.

The variable *DEFAULT-COMMON-LISP* has now gone --- readtables now contain all
the data which relied upon this variable. To use make a lisp listener use Common
Lisp reader syntax and functions by default, do
 (SETQ *READTABLE* SI:COMMON-LISP-READTABLE)
  or equivalently,  (COMMON-LISP T)
To use traditional Zetalisp syntax and functions, do
 (SETQ *READTABLE* SI:STANDARD-READTABLE) or (COMMON-LISP NIL)

To make a file read in using common-lisp syntax, and use common-lisp functions,
put "Readtable: Common-Lisp" or "Readtable: CL" in the attribute list
(the "-*-" line) of the file.
To make a file always read using traditional syntax and functions, use
"Readtable: Traditional" or just "Readtable: T".

The new editor command m-x Set Readtable will do this for you.
(See the Editor Changes section.)

Note that Zmacs now understands the different quoting characters ("/" and "\" respectively)
used by the different readtables, and is parses lisp code based on which readtable is
current.

Incompatible Changes

] Decimal radix is now the default.

The default values for reading and printing integers is now base 10.
The value of *nopoint is now T by default. All files (except init files) written
out by Zmacs in the last few systems have automatically had a base attribute
added to the "-*-" line, so this should not break many existing files.
If you want your init file to be in base 8, add Base:8 to the -*- line.

To get back the old behaviour, do (setq *print-base* 8. *read-base* 8. *nopoint nil)

] Lexical Evaluator is now the default.

hacks declarations, leaps tall buildings in a single bound.
semantics are now exactly the same as those of compiler.
say something about lexical closures??
(set 'a 3)
(defun foo ()
   (declare (special a))
   (print a))
(let ((a 1))
   (foo))
will print "3" just as it would if compiled.

Say much much more!!!

(let ((foo 1)) #'(lambda () foo) =>

] Changes to FORMAT control argument.

The control argument to FORMAT has changed for compatibility with Common Lisp.
There are no longer separate functions FORMAT and CLI:FORMAT, as there were in
System 98.  This change will affects the following FORMAT directives:

~X	~width,padchar,commacharX
	      Prints its argument in hexadecimal. (Analogous to ~O, ~B and ~D)
	This command used to be used to insert spaces into the output.

	Use ~number-of-spaces@T to achieve the same result as the old ~number-of-spacesX directive.

~F	~width,decimal-places,scale,overflowchar,padcharF
	      Prints a floating-point number in nonexponential notation.
		Multiplies by 10^scale before printing if scale is specified.
		Prints in width positions, with decimal-places digits after the decimal point.
		Pads on left with padchar if necessary.  If then number doesn't fit in width positions,
		and overflowchar is specified, this command just fills the width positions with
		that character.
	This directive used to just take one optional prefix control arg, which specified how many
		mantissa digits to print. This is the same as 2+decimal-places for the new FORMAT.

	Use ~,n+2F to achieve the same result as the old ~nF directive.

~E	~width,decimal-places,exponent-places,scale,overflowchar,padchar,exptcharE
	      Prints a floating-point number in exponential notation.
		Prints in width positions, with exponent-places digits of exponent.
		If scale (default is 1) is positive, prints scale digits before point, decimal-places-scale+1 after.
		If scale is zero, prints decimal-places digits after the point, and a zero before if there's room.
		If scale is negative, prints decimal-places digits after the point, of which the first -scale
		are zeros.
		If exptchar is specified, it is used to delimit the exponent (instead of "e" or whatever.)
		If overflowchar is specified, then if the number doesn't fit in the specified width,
		or if the exponent doesn't fit in exponent-places positions, the field is filled with overflowchar
		instead.
	This directive used to just take one optional prefix control arg, which specified how many
		mantissa digits to print. This is the same as 2+decimal-places for the new FORMAT.

	Use ~,n+2E to achieve the same result as the old ~nE directive.

~G	~width,decimal-places,exponent-places,scale,overflowchar,padchar,exptcharG
	      Like ~E, but if the number fits without an exponent, it is printed without one.
	This command used to be used to go to a particular argument.

	Use ~argument-number@* to achieve the same result as the old ~argument-numberG directive.

  In System 99, CLI:FORMAT has the same function definition as GLOBAL:FORMAT, so code written
for System 98 which used CLI:FORMAT will work correctly in System 99.
  Only code which used GLOBAL:FORMAT with any of the above changed FORMAT directives will need
to be altered to run in System 99.

] The FONTS package no longer USEs GLOBAL.

This means that any fonts created in earlier systems will have to be redumped
in order to work with system 99. This has been done for all the system's fonts
appearing  in the SYS: FONTS; directory.
There are two ways to do update the fonts to run in system 99. The first is to
write out (using FED) a KST format file of the font, load that into a system 99
world and then write out a QFASL font file.
The other technique is to do the following (in either system 98 or system 99)
   (use-package "GLOBAL" "FONTS")
   (load file-containing-font)
   (unuse-package "GLOBAL" "FONTS")
   (compiler:fasd-symbol-value file-to-contain-font 'fonts:name-of-font)
Fonts from system 99 will load into system 98, but to load a system 98 font into
a system 99 world, you will have to perform one of the above conversions.

] Ratios read and print according to current value of *READ-BASE* and *PRINT-BASE*

Ratios used to be always read and printed using decimal notation when using
traditional (non-common-lisp) syntax.
Thus, #5r-10\12 (or #5r -10/12 in common-lisp syntax) now represents
``minus five sevenths.''

] SELECTQ now uses EQL as its test function.

SELECTQ formerly performed all its comparisons using EQ.
Since everything that is EQ is also EQL, and the only things which are EQL but not EQ
are flonums, bignums and ratios (which should never have been used as tests for
SELECTQ in the past for this very reason) there should be no effect on any existing code.
SELECTQ and the Common Lisp macro CASE are thus now identical.


] CATCH and THROW are now synonymous with *CATCH and *THROW respectively.

CATCH and THROW used to be defined in a way which was compatible with Maclisp.
(CATCH form TAG) used to be what (CATCH 'TAG form) is now, and
(THROW form TAG) used to be what (THROW 'TAG form) is now.
Since Maclisp itself has been issuing warnings for years saying to use *CATCH, this
should cause no problems.
The implementation restrictions and general weirdness associated with the values from
CATCH (aka *CATCH) in older system versions have been fixed; CATCH now returns all the
values from the last form executed (if no THROW occurs) or else the values supplied by
the second argument to THROW.

] Arguments to APROPOS and WHERE-IS extended

The arguments to apropos are now
SUBSTRING &OPTIONAL (PACKAGE *ALL-PACKAGES*)
          &KEY (INHERITORS NIL) (INHERITED T) DONT-PRINT
               PREDICATE BOUNDP FBOUNDP
The PACKAGE argument is now the always the second argument
(it used to be a keyword argument)
The value of this argument may be NIL, meaning to search all packages,
a single package or package name, or a list of packages and/or package names.

WHERE-IS now accepts a package or a package name or a list of packages
and/or package names as it second argument

] DEFSTRUCT Macro Constructors Frob 'foo???

What does this mean ?
I'll tell you when I fix it.

] Change In Device Delimiting In Filenames

Because of changes in the file access system internals, a device in a
file specification with no explicit host must be preceded by a colon.
(This is because the filename parser must check to see if the device name
could also be a host name.)  For example, :SS:<SYS.UNSUPPORTED>YOW.MAC
is needed to specify a file on the SS device of a TOPS-20 host (which
is presumably a part of the defaults).  If the colon were not there, the
system may try to contact to host table in order to find out if
``SS'' were really a host.

Note that that change is important only if you most often use
Twenex, VMS, or ITS file servers.

BOB!!!!!! This MUST get an error if there is no such host!
It can't just randomly default to the current host! FIX THIS ASAP!

] channge in meanning of seconnd arg (with-respect-to) to fs:parse-pathnname

Compatible Lisp Programming Changes

] New frobs SI:FIND-READTABLE-NAMED SI:*ALL-READTABLES* SI:RDTBL-NAMES

Talk a little about named readtablesat all ?

] New way of initializing process of TV:PROCESS-MIXIN

Normally, if the PROCESS argument to TV:PROCESS-MIXIN is  a symbol,
it is used as the top level function and MAKE-PROCESS is called with
no keyword arguments.
But, as an exception, if PROCESS is T, the top level function is
to send the window a :PROCESS-TOP-LEVEL message with no arguments.
So, for example, one could write:

(defflavor crock-window ()
                        (tv:process-mixin tv:window)
  (:default-init-plist :process t)
  (:documentation "A window which displays a crock."))

(defmethod (crock-window :process-top-level) ()
  (draw-crock self)
  (do-forever
    (update-hands)
    (process-sleep 60.)))

] Compiler Optimization changed.

Many compiler optimizers have been reimplemented, and should often produce
better code. The most visible change is that any form is only optimized once,
no matter where it appears. (In earlier systems, a form could sometimes be optimized
twice, which could produce duplicate compiler warnings) In addition, the order in which
optimizations are carried out has changed. All the arguments to a function are optimized
before the call to the function on those arguments, unless the "function" is a macro
or special form, in which case it is expected to take responsibility for doing its own
optimizations.

] New :SUBMIT option for opening files

A new :submit option available in OPEN and WITH-OPEN-FILE and friends, when T
(default NIL) will submit the file for batch processing.  Thus, the :direction
must be :output as well.  The :submit option is currently effective on VMS and
Twenex Chaosnet FILE servers.

An example:

(DEFUN RETRIEVE-TWENEX-FILE (F)
  "Submit a batch job that will retrieve the file F"
  (SETQ F (FS:PARSE-PATHNAME F))
  (WITH-OPEN-FILE (S (SEND (SEND (SEND (SEND F :HOST) :SAMPLE-PATHNAME) 
				 :HOMEDIR)
			   :NEW-PATHNAME :NAME "_RETRIEVE" 
			   :TYPE "CTL" :VERSION :NEWEST)
		     :DIRECTION :OUTPUT
		     :TEMPORARY T
		     :SUBMIT T)
    (FORMAT S "@RETRIEVE ~A~%" (SEND F :STRING-FOR-HOST))))

] New :PROPERTIES operation on file streams

Sending a :properties message to a file stream returns two values: a property
list, like the kind which is a element of the list returns by FS:DIRECTORY-LIST,
and a list of settable properties.  There is the usual optional ``error-p'' argument,
as well.  This operation uses a new PROPERTIES command in the Chaosnet file
protocol, so it may not work with servers running old software.

User Interface Changes

] New function COMMON-LISP

When this function is called in a lisp-listener, it changes whether Common Lisp
or Tradtional Zetalisp syntax and incompatible functions are to be used for reading
and printing lisp objects. It works by SETQing *READTABLE*.

It takes one argument, which should be either T or NIL.

See the section Using Common Lisp in the MIT Lisp Machine System.

] Standard hardcopy options can be defaulted on a per-printer-type basis

(SET-PRINTER-DEFAULT-OPTION printer-type option value) allows the user to set a
default option for a printer type, which the hardcopy functions look at.
A common use at MIT may be (SET-PRINTER-DEFAULT-OPTION :DOVER :SPOOL T),
which will cause Dover output to be spooled unless the :SPOOL option to a
hardcopy function is supplied.  Currently defaultable options are :FONT,
:FONT-LIST, :HEADING-FONT, :PAGE-HEADINGS, :VSP, :COPIES, and :SPOOL.

] Usual mail file directory option for ZMail

You can set this option in the Profile editor in ZMail.  It simply informs ZMail to
use a short name for a mail file in a menu, if that file is found in the
directory.  (The full name of the file is displayed if it has not been read
into a buffer yet.)

] New beep types for the type argument to TV:BEEP

	Name			      Condition
	FQUERY		      FQUERY asks for something and needs to beep.
	SUPDUP:TERMINAL-BELL   Bell character received

] DRIBBLE-START, DRIBBLE-END gone
Use (DRIBBLE filename) or (DRIBBLE-ALL filename) to start wallpapering output
to a file, and (DRIBBLE) with no arguments to terminate output and close the
file.

] New special form: MULTIPLE-CERROR
do I really want ot document this??

] string-append frobs array type

] :set method on flavors


] SELECT-MATCH and LIST-MATCH-P now accept logical combinations of patterns
Hack and, or, not appearing at top-level. Not ambiguous, since not quoted.

(defun hack-add-sub (x)
  (select-match x
    ((or `(+ ,y 0) `(- ,y 0) `(+ y)) t
     y)
    ((not (or `(+ . ,ignore) `(- . ,ignore))) t
     (ferror nil "You lose"))
    (t x)))

] Complex and rational arithmetic is now common-lisp compatible.

canonicalization
rampant floating and complex contagion
complex rational canonicalization
real and imag parts of complexnum of same type

There are still some many cases of transcendental functions of complex to be written
Also atan of one arg.

SYS:NEGATIVE-SQRT gone

new condition SYS:ILLEGAL-EXPT

log takes optional second arg
sqrt returns complexnum if necesary

] Short-floats have one more bit of mantissa.

Short-floats now have 17 bits of mantissa, 7 bits of exponent magnitude, and
1 bit of exponent sign.  Short-floats in QFASL files dumped in 99 will load
properly in System 98 if the mantissa is within the old range; if not, an
error will be signalled.

] New types NON-COMPLEX-NUMBER and REAL

(TYPEP x (NON-COMPLEX-NUMBER low high)) returns T if x is a non-complex
number (ie a floating-point number, a ratio or an integer) between low and high,
the limits as usual being inclusive normally, or exclusive if they constist of a
list of one element.
Note that complex-numbers with imaginary part = 0 are never of NON-COMPLEX-NUMBER,
since they are always of type COMPLEX. To account for this additional case, there
is another new type, REAL, which is defined such that
(TYPEP x (REAL low high)) returns T if x is a either a non-complex
number between low and high, or a complex number with a zero imaginary part
and a real part lying between low and high.

] Changes to forms specially treated at top-level in the compiler.

Following is a partial list of symbols, which, when appearing as the car of a list in a top-level
form, will cause that form to be treated specially by the compiler.
Only those whose meanings have changed, or require clarificatrion, are listed here.

PROGN		Treat all following forms as if they also were at top level.
		Note that in Maclisp and in systems 97 and earlier, it was
		necessary for the cadr of the list to be the symbol 'COMPILE
		for this to happen. This curious behaviour has been eliminated.
PROCLAIM	The arguments are evaluated, and relevant proclaimations
		(such as SPECIAL, NOTINLINE) are used in the remainder of the compilation.
		This is as if the form were contained within a (eval-when (eval compile load) ...)
EXPORT IMPORT IN-PACKAGE MAKE-PACKAGE SHADOW
SHADOWING-IMPORT UNEXPORT UNUSE-PACKAGE USE-PACKAGE
		These perform their relevant actions as if the form contained within a
		(eval-when (eval compile load) ...)
REQUIRE	Ditto.

To cause a form not to be treated specially at top-level by the compiler, enclose it in
an EVAL-WHEN. Eg:
(EVAL-WHEN (LOAD)		;don't want this package to be consed up when we're just compiling!
  (MAKE-PACKAGE "LOSSAGE" :USE NIL :SIZE 69))

] New macro: TV:WITH-WHO-LINE-RUN-STATE

Using this macro, it is possible to bind the run-state field of wholine (the one which
usually either "Keyboard" or "Run") to some user-informative value in a simple manner.
Before, it was necessary to change an instance variable of the current process, which
the scheduler would keep bashing to "Run".

Example usage:
(DEFUN TOP-LEVEL-FROBNICATE (WIDGET)
  (TV:WITH-WHO-LINE-RUN-STATE ("Preprocessing")
    (SETQ WIDGET (PREFROBNICATE WIDGET)))
  (TV:WITH-WHO-LINE-RUN-STATE ("Pass 1")
    (FROB-1 WIDGET))
  (TV:WITH-WHO-LINE-RUN-STATE ("Pass 2")
    (FROB-2 WIDGET)))

] New variable TIME:*DEFAULT-DATE-PRINT-MODE*

What kind of time printing does it effect ?
 --- see the manual, ``Bob'' Section 34.2, `Printing dates and times,' or sys:io1;time
 time:print-time, time:print-universal-time, time:print-brief-universal-time,
 time:print-date, time:print-universal-date
Description of possible values
Only one "/" in zl
 :DD//MM//YY						;27/10{/66}
 :DD//MM//YYYY						;27/10{/1966}
 :MM//DD//YY						;10/27{/66}
 :MM//DD//YYYY						;10/27{/1966}
 :DD-MM-YY							;27-10{-66}
 :DD-MM-YYYY						;27-10{-1966}
 :DD-MMM-YY						;27-Oct{-66}
 :DD-MMM-YYYY						;27-Oct{-1966}
Note that use "\" in cl
 :DD/ MMM/ YY						;27 Oct{ 66}
 :DD/ MMM/ YYYY						;27 Oct{ 1966}
 :DDMMMYY							;27Oct{66}
 :DDMMMYYYY						;27Oct{1966}
 :YYMMDD							;661027
 :YYYYMMDD						;19661027
 :YYMMMDD							;{66}Oct27
 :YYYYMMMDD						;{1966}Oct27
 :YY-MMM-DD						;{66-}Oct-27
 :YYYY-MMM-DD						;{1966-}Oct-27
 :YY-MM-DD							;{66-}10-27
 :YYYY-MM-DD						;{1966-}10-27
these last four, and all the "yyyy" ones are new since the manual

Default value
 :mm//dd//yy YECH! BLECH! BARF!! I really think that this should be :dd-mmm-yy
 I cannot see anything that this could break. ``Bob'' would you ask LMI people what
 they think of that?

] time parser accepts iso format dates (99.10)

understands yyyy-mmm-dd, yyyy-mm-dd


] Changes to logical pathnames

This needs much flaming!

Logical pathnames now have structured directories.

Pathname translations are now really translations, not just an alist.
Example of use.

FS:MAKE-LOGICAL-PATHNAME-HOST
FS:SET-LOGICAL-PATHNAME-HOST

SYS:SITE;FOO translations

] New function: FS:MERGE-PATHNAME-COMPONENTS

This function extends the functionality of both the commonlisp function MERGE-PATHNAMES
and the old Lisp Machine function FS:MERGE-PATHNAME-DEFAULTS.

Its argument list is:
(PATHNAME &OPTIONAL DEFAULTS
          &KEY DEFAULT-NAME ALWAYS-MERGE-NAME
               DEFAULT-TYPE ALWAYS-MERGE-TYPE
               DEFAULT-VERSION ALWAYS-MERGE-VERSION)

MERGE-PATHNAME-COMPONENTS defaults components that are of PATHNAME which are NIL,
and returns the defaulted pathname.
DEFAULTS is a pathname or a defaults-list to get defaults from.
If non-NIL, DEFAULT-NAME, DEFAULT-TYPE and DEFAULT-VERSION respectively are used as the
defaults for the name, type and version components if those components are not supplied
by PATHNAME.  Otherwise, those components are defaulted from DEFAULTS in the usual manner.
ALWAYS-MERGE-NAME, ALWAYS-MERGE-TYPE and ALWAYS-MERGE-VERSION respectively mean that
the version and type components should always be merged in (from either DEFAULT-xxx
or from DEFAULTS) even if the relevant component is already specified by PATHNAME.

(MERGE-PATHNAMES PATHNAME DEFAULTS DEFAULT-VERSION) is thus equivalent to:
(MERGE-PATHNAMES-COMPONENTS PATHNAME DEFAULTS :DEFAULT-VERSION DEFAULT-VERSION
					      :ALWAYS-MERGE-VERSION T)
since `CommonLisp says' that the DEFAULT-VERSION argument to MERGE-PATHNAMES is merged
into the resulting even if PATHNAME already had a version component.

FS:MERGE-PATHNAME-COMPONENTS differs from FS:MERGE-PATHNAME-DEFAULTS in that it performs
only the merging operation of filling NIL components of one pathname with (possibly NIL)
components from the defaults, whereas FS:MERGE-PATHNAME-DEFAULTS will never return a pathname
with a NIL name or type component (and may also do a whole bunch of heuristic dwinoid things,
which is not always appropriate)

  FS:MERGE-PATHNAME-DEFAULTS is thus a function useful for defaulting a pathname that the user
has just entered for some purpose, such as to be read.
  FS:MERGE-PATHNAMES-COMPONMENTS will perform a single merging (and may return a pathname
which is not accceptable for performing file operations upon --- such as a pathname with a name
of NIL.) It is useful for programs which need to manipulate filenames in an exact manner
(such as the file server) and do not want any user-oriented heuristics happening ``behind its back.''
It ignores such variables as *ALWAYS-MERGE-TYPE-AND-VERSION* and *NAME-SPECIFIED-DEFAULT-TYPE*,
which FS:MERGE-PATHNAME-DEFAULTS uses.
  MERGE-PATHNAMES is a lobotomized version of FS:MERGE-PATHNAME-COMPONENTS which Common-Lisp
implementations understand.

A typical use of FS:MERGE-PATHNAME-COMPONENTS is
(SETQ QFASL-FILE (FS:MERGE-PATHNAME-COMPONENTS QFASL-FILE LISP-FILE
                                               :ALWAYS-DEFAULT-VERSION T
                                               :DEFAULT-TYPE :QFASL
                                               :ALWAYS-DEFAULT-TYPE T))
which will produce a file whose version is the same as that of LISP-FILE and whose type is
always QFASL, and whose other components are the (perhaps NIL) results of merging
the components of LISP-FILE with QFASL-FILE.

Some examples:
(setq pn1 (make-pathname :host twenex-host :name "FOO" :version 259))
  => #FS::TOPS20-PATHNAME "TWENEX:FOO..259"
(setq pn2 (make-pathname :host twenex-host :device "DP" :type :TEXT))
  => #FS::TOPS20-PATHNAME "TWENEX:DP:.TEXT."

(fs:merge-pathname-components pn1 pn2)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.TEXT.259"
(fs:merge-pathname-components pn1 pn2 :default-version 5)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.TEXT.259"
(fs:merge-pathname-components pn1 pn2 :default-version 5 :always-merge-version t)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.TEXT.5"
(fs:merge-pathname-components pn1 pn2 :default-version 5 :default-type :lisp
			      :always-merge-version t)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.LISP.5"

(fs:merge-pathname-components pn2 pn1)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.TEXT.259"
(fs:merge-pathname-components pn2 pn1 :always-merge-type t)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO..259"		;merges in null type!
(fs:merge-pathname-components pn2 pn1 :default-type :lisp)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.TEXT.259"
(fs:merge-pathname-components pn2 pn1 :default-type :lisp :always-merge-type t)
  => #FS::TOPS20-PATHNAME "TWENEX:DP:FOO.LISP.259"


] mouse blips (as from :any-tyi) format changed.
Used to be (:mouse-button # # #/mouse-l-1 ...)
Now (:mouse-button #/mouse-l-1 window x-position y-position)

This is different from what is documented in windowman.
Changed for brand s

] TERMINAL C-CLEAR-INPUT is now TERMINAL C-M-CLEAR-INPUT

This keyboard sequence is used to try to unhang some window-system
problems. It has been changed so that c-clear-input is typeable (by having
it quoted with "terminal," which causes it to lose its special meaning of "flush
keyboard typeahead" and be simply passed on to the program which is reading
from the keyboard.)

Editor Changes

] Editor Aids for Common Lisp

m-X Set Readtable
How is the readtable name interpreted ?  What are the names for Zetalisp ?
For Common Lisp ?  What happens if you just type <Return> ?

m-X Set Common-Lisp [???]
Does this set the base, too ?

Besides binding the readtable for the editor buffer and the break loop,
the readtable attribute also sets the quoting character (one of the two
slash characters) as appropriate.

] Lisp Case Changing Commands Renamed

The extended (m-X) commands for changing the alphabetic case of Lisp code
have been renamed:

  Old name                     New name
  Lisp Lowercase Region        Lowercase Lisp Code In Region
  Lisp Uppercase Region        Uppercase Lisp Code In Region

As a result, typing ``m-X lisp'' now completes to ``Lisp Mode.''

] Changes in Two History Yank Commands

When editing in a minibuffer, c-m-Y yanks in the history, making it consisten with
the action of c-m-y in the rest of the system, and  m-sh-Y inserts the previous command
given in the minibuffer.

] ZWEI:SEARCH renamed ZWEI:ZWEI-SEARCH to avoid name conflict with GLOBAL:SEARCH
Note that this is only an internal frob used by people writing their own zmacs commands,
and is not visible to m-x losers

[Does the old name still work ?]
Yes, but the compiler barfs. The name should be changed asap, but will continue to work
for another system version or so, I guess

Network Changes

] SI:PARSE-HOST Uses the HOSTAB Servers By Default

SI:PARSE-HOST's second argument, UNKNOWN-OK, now defaults to T.  That means that if it
can't find the host on SI:HOST-ALIST, it tries contacting a host table server to see if it
knows about the host.  If the server contact does not, an error is signalled (or NIL is
returned) as usual.  The change was made to minimise the penalty for not loading the
latest site files.  (Up-to-date site information can be a problem at large installations.)

The list of hosts that may be contacted on the Chaosnet for this service are listed in the
site option :CHAOS-HOST-TABLE-SERVER-HOSTS.

] New Chaos Routing Inspector Functions.

These two functions make use of the DUMP-ROUTING-TABLE protocol,
documented in the new edition of the Lisp Machine Manual.  They are primarily
for inspecting the operation of the network and the localisation of
bridging and routing problems.

(CHAOS:SHOW-ROUTING-TABLE host &optional (stream *STANDARD-OUTPUT*)) will
print out the routing table of host onto stream.

(CHAOS:SHOW-ROUTING-PATH &key (from SI:LOCAL-HOST) to (stream *STANDARD-OUTPUT*))
will show how packets will flow from from to to, using the routing information
supplied by from and any intervening bridges to figure out the path.

For example, (chaos:show-routing-path :from "charon" :to "nu-1") may produce
the following output:

MIT-CHARON will bounce the packet off MIT-SIPB-11 at cost 81.
MIT-SIPB-11 will bounce the packet off MIT-INFINITE at cost 63.
MIT-INFINITE will bounce the packet off MIT-BYPASS at cost 51.
MIT-BYPASS will bounce the packet off MIT-OZ-11 at cost 37.
MIT-OZ-11 will bounce the packet off XI (XX-Network-11) at cost 23.
Direct path from XI (XX-Network-11) to host MIT-NU-1 on subnet 32 at interface 1.

] Chaosnet source files have been reorganised

The old files SYS: IO; CHSNCP and CHSAUX have been moved to
the NETWORK;CHAOS;  directory.  (See the Site option Changes section for advice
before restoring the new sources.)  These files have been augmented by a new
file, CHUSE, which now contains the user connection-level functions previously
found in CHSAUX.  Also moved from the IO1 directory are CHATST (low-level
testing functions) and EFTP, an interface to the 3Mb (old) Ethernet Easy File
Transfer Protocol that requires a protocol-translating gateway.

Site option Changes

] New source directories need to be created

A few new directoires will be used to hold Lisp Machine source files that relate
to network software.  Please create these directories on the SYS host, and update
the appropriate sys-host-translations variable(s) in SYS: SITE; SITE LISP :

	Logical directory	Suggested translation
	NETWORK		L.NETWORK
	NETWORK; CHAOS	L.NETWORK.CHAOS
	NETWORK; IP		L.NETWORK.IP
	IO; FILE	      L.IO.FILE

Say how to use sys:site; system translations to frob this for random hosts

Of course, the names of the directories will be different if you don't store
sources under a L hierarchy, but the names should follow this form.

] New site option :STANDALONE

If the Lisp Machine is just by itself, the option should be supplied with value T.
This will cause the Lisp Machine to not to try to use the Chaosnet for getting
the time, for one thing.  On the Lambda, the time will obtained from the SDU's
clock.  On the CADR, the time will be obtained from the user.

] New site option :LOCAL-INTERNET-HOST-TABLE

Defaults to SYS: SITE; IN-HOSTS TEXT (if not supplied or with the value
T), but can be changed to share with other subsystems or machine types.

] New site option :VERIFY-LM-DUMPS

If this site option is T, Lisp Machine file system dump tapes will be verified.

] New Way of specifying file computers

Because of changes to the internals of the file access system, the method
for specifying file computer at a site has changes.  The old list
in the site option :CHAOS-FILE-SERVER-HOSTS, but the new option
:FILE-SERVER-HOSTS is preferred.  Note that:

 * A pathname host does not have to be on the list :FILE-SERVER-HOSTS
   to actually be recognized as a pathname host.  (This was not true in
   earlier systems.)  As long as the host is known (either in the host table
   or known about by a host table server), an error will not occur.
   Thus, it is not necessary to edit SYS: SITE; SITE LISP when a new
   file server is attached to the site; the site option merely names what
   file servers are known initially.

 * For now, the old and new names of the site option are equivalent,
   (with one exception -- see below) but
   the new name is preferred in antcipation of when TCP/FTP file access is
   implemented.

For LMFS support, a file computer in the pathname host list was specified
as a list of the host and the file system type.  This has been changed
to be more convenient -- instead, there is new site option
:SPECIAL-FILE-HOSTS which is a list of

	(file-system-type . hosts)

where file-system-type is a keyword.  The only supported one at the
moment is :LMFS, as before.

It is now possible is specify the default device of a host by using the
site option :HOST-DEFAULT-DEVICE-ALIST, an alist of host names and device
names (with the colon).  This currently only works for Twenex hosts.
An example of the use of the option:

	  (:HOST-DEFAULT-DEVICE-ALIST '(("OZ" . "OZ")))

Here, we are overriding the default name PS.

If, for example, a Twenex host is configured for a non-PS primary structure
name, this option should be used, to eliminate some strange interactions
that can happen when the truenames of files are compared against supplied
names.
    

Last modified: 2025/06/05 09:01:32 (UTC) by ams