perm filename SAILV8.DOC[10X,AIL] blob sn#125754
filedate 1974-10-19 generic text, type T, neo UTF8
SAIL Changes, New Features
Compiler Version 16, Segment SAISG8
R. Taylor, J. Reiser, R. Smith
October 18, 1974
The new version of SAIL should present relatively few changes
and inconveniences for the user. There are no known language
incompatibilites. Unfortunately, it will be necessary to recompile all
.REL files (including load modules and libraries) for use of the new
The main reason for bringing up a new SAIL is to accomodate the
new debugger that John Reiser has written. Thus, the new compiler has
features that allow the compilation to include the semantic information
about the program necessary for the debugger. A few changes have also
been made to the runtime system to accomodate the debugger, chiefly the
change in the break table features, described below. The debugger
itself will be available in several weeks.
A few other changes have been made that the user may see.
These are described below.
CLOSE Inhibit Bits
The CLOSE function now has an additional optional argument that
allows the CLOSE inhibit bits to be turned on. The second argument is
the bit pattern for the inhibition, and it is defaulted 0. See the UUO
manual for details.
This feature is available only at SU-AI, and is not available
in the TENEX version.
TYPEIT Array type
The number returned by the TYPEIT procedure (which identifies
the type of the datum of its item expression argument) is now changed
for arrays. Now it is '24 plus the scalar value of the type (e.g.,
INTEGER), whereas before it was '15 plus the scalar value.
Additional types added to TYPEIT are: '16 for labels, '17 for
Comparison of .REL Files
Starting with version 18, the compiler emits information into
each .REL file containing the version of the compiler used. Then,
during the SAIL initialization sequence, these versions are compared,
and a warning message is issued if necessary. Thus, the problem of
converting from one version of the compiler to a new version is
lessened. This feature may not work as well in the current changeover
as it will in the future.
The SCAN function has been modified to return true substrings
instead of copies in those cases that the break table in question was
not omitting any characters. This should be an improvement in the
efficiency of those routines.
There are now 54 user-setable break tables available to the
SCAN, INPUT, TTYINL functions, as well as SETBREAK and BREAKSET. These
tables are allocated and deallocated dynamically.
In addition, GETBREAK now returns the value of the smallest
unallocated breaktable, and RELBREAK releases its table argument. The
implicit declarations of these new runtime routines are:
INTEGER PROCEDURE GETBREAK
PROCEDURE RELBREAK(INTEGER TABLE)
NOTE: a breaktable is allocated by either GETBREAK, SETBREAK, or
RELBREAK. A breaktable is de-allocated (and thereby made available to
GETBREAK) by RELBREAK. Breaktables are stored in groups of 18, so it
is more efficient to use all the tables in a given group before going
to another group. The use of GETBREAK is particularly recommended for
load-modules and the like, so that conflicts will be minimzed.
HACKERS: Actually there are 18 additional system breaktables
which are reserved for use by the SAIL runtime system. These tables
are numbers -17 through 0, and are ordinarily not available to the
user. They will be used by the debugger and by additional SAIL system
The user can obtain access to breaktables -17 through 0 by
setting BRKPRV(USER), for example by the USERCON function. WARNING:
absolutely no guarantees are made to the user who accesses these
breaktables. This information is intended for completeness only; the
use of these special breaktables by the user is not recommended.