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

New version of Interlisp-10 (release 145)



This message announces a new version of Interlisp-10, version 145.
This version is available to Arpanet sites as:
	[PARC-MAXC]<LISP>NETLISP.SAV;145. 

Please forward as appropriate to your users.

(Xerox users will find a version on <SUBSYS>LISP.SAV;145.) 

Sources and .COM files are also found on [PARC-MAXC]<LISP>.
Note that we have discontinued using PARC-specific .COM files, so that
the need for a separate NETLISP and NETLISPUSERS directories have
vanished. You should once again obtain all files from <LISP> and
<LISPUSERS>, although <NETLISP>MESSAGE.TXT may be of some interest.)

This release includes a number of important bug fixes and
improvements, as well as support for features to enable Interlisp
programs to be written so that they may be more easily ported to
other implementations of Interlisp (specifically, Interlisp-D,
Interlisp-Jericho and Interlisp-VAX.)

Note that most of these changes are not specific to Interlisp-10;
they appear in Interlisp-D, -Jericho and -Vax.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(SYSTEMTYPE)						[Function]

The function (SYSTEMTYPE) is defined in all implementations to
return the type of the currently running system. In Interlisp-10,
it returns either the atom TOPS20 or TENEX. Programs which need to
perform different actions depending on the type of system they are
running under can write

(SELECTQ (SYSTEMTYPE)
	((TENEX TOPS20) (* Interlisp-10 version) --)
	(VAX (* Interlisp-VAX version) --)
	((D ALTO) (* Interlisp-D version) --)
	(JERICHO (* Interlisp-Jericho version) --)
	--)

All Interlisp compilers, including Interlisp-10, will actually
perform the selection at compile-time (for the "target" system.)
This means that, although the selection looks like it is run-time,
it is actually handled at compile time.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(COMPILEMODE)						[Function]

The function (COMPILEMODE) is defined in all implementations to
return the type of the system being compiled for. This differs from
(SYSTEMTYPE) in that one can perform cross-compilation, e.g., run
the Interlisp-D compiler under Interlisp-VAX. Note also that
(COMPILEMODE) for Interlisp-10 is the atom PDP-10, rather than
TENEX and/or TOPS20.

This sometimes occurs, e.g., in the fileCOMS for a file, for
example:
(DECLARE: EVAL@COMPILEWHEN (EQ (COMPILEMODE) (QUOTE PDP-10))
		(FILES (SYSLOAD FROM VALUEOF LISPUSERSDIRECTORIES)
			CJSYS]


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
10MACRO						[Property]
MACRO						[Property]
VAXMACRO					[Property]
DMACRO (ALTOMACRO)				[Property]
JMACRO						[Property]
COMPILERMACROPROPS				[Variable]

Another way of conditionally compiling for different systems is to
use different macro properties. The Interlisp-10 compiler (and
other Interlisp compilers) now search for a number of properties
(as determined by the variable COMPILERMACROPROPS) rather than a
single one. The property MACRO should be reserved for
machine-independent macros. If you have macros which are specific
for a single implementation (e.g., Interlisp-10 macros which
generate ASSEMBLE code), you should use the
implementation-dependent macro name. In Interlisp-10, this is the
atom 10MACRO.

The packages EXPANDMACRO, MACROTRAN, ASSEMBLETRAN have all been
modified to be compatible with this change.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(LINELENGTH N FILE)				[Function]

The notion of line length is now file-specific. Every file has its
own individual line length.  The linelength for T is set from the
operating system via the function (SETLINELENGTH) {executed at
every (RESET) and when starting an Interlisp-10 sysout}. The line
length for disk files is initially set to be the value of
FILELINELENGTH when a file is opened for output.

This change was motivated primarily by multiple-window systems
where each window wants to have its own notion of the length of a
line, but is definitely an improvement in the semantics of
LINELENGTH. Unfortunately, it is necessary to examine existing uses
of the function LINELENGTH to ensure that they will continue to
operate correctly. Since the FILE to LINELENGTH, if unsupplied,
defaults to the current output file, most existing uses of
LINELENGTH will continue to work unchanged.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(ARRAY SIZE TYPE INIT)					[Function]

The ARRAY function in Interlisp-10 has been extended to accept a
TYPE argument as allowable in other Interlisp implementations. In
particular, TYPE can be any "specification" which is allowable in a
datatype declaration:
	(BITS n)
	POINTER
	FIXP
	FLOATP

There are not actually any new array types in Interlisp-10; that
is, the ARRAY function returns an array which will "hold" the
values specified. This allows code to be written which takes
advantage of the new features of the other Interlisp
implementations but will still run in Interlisp-10.

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(DEFPRINT TYPENAME FUNCTION)			[Function]

The interpretation of DEFPRINT function has been extended
(compatibly) so that the user's function gets passed a second
argument, FILE. If output is being directied to a file, the full
name of the file will be passed. (If output is for one of the
internal printing functions, e.g., NCHARS, the FILE argument will
be NIL.) The value returned from the users DEFPRINT function is
interpreted as follows:
  NIL - print the standard #nnnnn for this object
  a list - If the car is non-NIL, print it using PRIN1.  Then, if
	the CDR is non-NIL, print it using PRIN2.
	(The non-NIL CDR test is a change. It means the
	user doesn't have to return (PACK) to avoid
	PRIN2 printing.]
 anything else - no additional printing (beyond what the user
	function did) is performed.

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(ECHOCONTROL CHAR MODE)				[Function]

The function ECHOCONTROL returns and will accept as its MODE
argument the atom INDICATE (instead of UPARROW) to mean "indicate
the character as appropriate". This change was made in order to
handle reasonably the printing of characters in extended ranges,
namely, the 8-bit character codes in other Interlisp
implementations.)

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(SKIPSEPRS FILE RDTBL)					[Function]

Advances the file pointer of FILE until a non-SEPR character in RDTBL is
peeked at. Value is that non-sepr, or NIL if there are no non-seprs left on the
file.

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BREAKCHECK and NLSETQ interaction

We have fixed the interaction with NLSETQ and BREAK so that it is
guaranteed that no break will occur (unless HELPFLAG is !BREAK) and
no error message will be printed (unless NLSETQGAG is NIL) under an
NLSETQ.

This change removes the necessity of re-binding HELPFLAG to ensure
this behavior, e.g., (RESETVARS (HELPFLAG) (RETURN (NLSETQ --] can
be re-written back as (NLSETQ --].
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(FINDFILE FILE NSFLG DIRS)				[Function]

The FINDFILE function has been modified slightly. If the DIRS
argument is supplied, FINDFILE will no longer first look on the
connected directory. The connected directory will be searched if and when the
atom T is found in the list. NIL in the DIRS-list still means the "login"
directory. (Note: FINDFILE is a "super" INFILEP; it attempts
spelling correction, unless NSFLG is T, and will scan the given
DIRS or the directories on the global variable DIRECTORIES.
This mechanism may be used in lieu of or in addition to the
directory-path feature of TOPS-20; many system packages when
scanning for files use FINDFILE or its SPELLFILE equivalent.)

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Font profile change

The entries on the variable FONTPROFILE no longer need the "extra
cell" documented in the manual.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
New (versions of) LISPUSERS packages, on [PARC-MAXC]<LISPUSERS>

Site maintainers should check to see if they have the latest versions of the
following LISPUSERS packages. Unfortunately, some of the version numbers have
been reset, so that the most reliable way of checking is to look at the
FILECREATED date, or at least the creation-date of the file on our <LISPUSERS>
directory. Files recently updated or released include:

BQUOTE (new package, see .TTY file), DECL, PERFORMTRAN (new package),
ALL, COMMENT, REMIND

All other packages have been recompiled using a somewhat improved PDP-10
compiler; it is probably also worth retrieving new .COM files for all packages.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
GREET implementation change

GREET no longer uses the GREETDIRECTORY/GREETFILE/GREETEXT
mechanism to determine the "name" of the greet file. Instead, GREET calls
a single function, GREETFILENAME, which can be advised or redefined if the
user wants to modify the behavior of GREET. 

(GREETFILENAME USER) is called twice, once with USER=T and once with
USER=USERNAME. In the standard system, (GREETFILENAME T) returns
<LISP>INIT.LISP, while (GREETFILENAME 'user) returns <user>INIT.LISP.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FNS/VARS file

Unfortunately, there is no FNS/VARS file for this loadup of Interlisp-10.
We will attempt to provide a cross reference file in the near future.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Special loadups

For those sites which make special loadups, please be advised that the
"filegroups" (PRETTY COMMENT), (EDIT WEDIT), (DWIMIFY WTFIX CLISP)
have been split up. If you were formerly explicity loading (or excluding)
PRETTY.COM, you will have to explicitly load (or exclude) both PRETTY.COM
and COMMENT.COM to have the same effect.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Various fixes:

LOADCOMP? remembers more reasonably which files have been
LOADCOMPed. Many minor fixes to the file package, break package,
clispify, record. 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
A few reported bugs have not been fixed yet:

(EXPT 16.0 16) still returns wrong result (Interlisp-10 only).

Masterscope cannot analyze expressions beginning with "with".
	does not see field names used in conjunction with change-words.
	SHOW PATHS has problems with extremely long function names.

If there are other bugs which have been reported and have not been fixed,
please remind us.

-- The Interlisp Maintainers 
	[consisting currently of various people at Xerox, BBN, and ISI].