Text preview for : 19770926_Mesa_3.0_Tasks.pdf part of xerox 19770926 Mesa 3.0 Tasks xerox sdd memos_1977 19770926_Mesa_3.0_Tasks.pdf



Back to : 19770926_Mesa_3.0_Tasks.p | Home

XEROX
INFORMATION PRODUCTS GROUP
System Development Division
September 26, 1977


IIr.OX SDD ARCHIVES
To: File I have read and un(,en;t"od
From:

Subject:
John Wick
Mesa 3.0 Tasks
Paees
Revi~wer
----- '1'0
____ b& "c:_ ~ .-.._-,..
_
Keywords: Mesa, Work Plan # of P",S_ _ R".t. 11~DD.331

Filed On: MESADONE30.BRAVO



This memo identifies those items from the Mesa task list that have been implemented in
Mesa 3.0. An update of the task list which reflects these changes will be forthcomming
shortly.

Items are organized alphabetically by major component References are enclosed in square
brackets. To distinguish among mUltiple works by the same person, a terse abbreviation for
the title of the reference has been appended to the author's name (e.g., [LampsonCD*]).

Some items (marked with #) have been retained temporarily in Mesa 3.0 to ease conversion;
these will be removed in the first maintenance release.

Language

Boolean Enumerated Type
Defining the built-in type BOOLEAN as an enumerated type would altow it to be used as a
variant record tag. This case occurs frequently in Diamond data structures. [WickLWG]

Data Modules (#)
The destinction between DATA and PROGRAM modules is no longer meaningful, since all
modules are started only once under the new scheme proposed for the binder. Data
modules will ~e retained temporarily for compa/ability. [Sweet]

Directory Names
In, conjunction with other changes which improve type checking (primarily export checking
for the new binder), the compiler will now verify that the name in the DIRECTORY statement
matches the one in the corresponding definitions or program module. The binder will also
make this check. [MesaLM]

Empty Intervals
Allowing empty intervals (especially for array index sets) in type definitions would provide
some help in implementing sequences until they are incorporated into the language.
Mesa 3.0 Tasks 2


External Dec/arations (#)
The new binding scheme requires that all references to types defined outside a module must
be obtained from included modules. The EXTERNAL attribute will therefore be removed from
the language. It will be retained temporarily for compatability. [Binder, Sweet]

Implementing/ Sharing (#)
The IMPLEMENTING construct will be replaced by EXPORTS. For compatability with IMPORTS and
EXPORTS, SHARING will be replaced by SHARES. Both will be retained temporarily for
compatability. [Binder, Sweet]

Implicit Stop
The implicit STOP statement inserted by the compiler between the initialization code and the
module's main body will be removed. This implies that all modules need be started only
once, regardless of the presence of main body code. [MesaLM]

I mports/ Exports
The IMPORTS and EXPORTS lists wilt be added to the program header. The compiler witJ now
check that a module's procedures match the corresponding definitions in the exported
interface. [Binder]

Module Instantiation
Parameter passing wilt move from NEW to START, allowing a module to be instantiated
without running any of its code. This permits the binder to run as a preprocessor. The
RESTART statement wilt be added to absorb the current uses of START without parameters.
[Binder]

Module Instantiation - Copy
A form of NEW which copies the bindings from an existing module instance would greatly
speed this operation in what is thought to be a common case. [WickUMI]

Overlayed Variant Records
The constructions for referencing computed variant records could be simplified considerably
by allowing access without descrimination to those fields which have unique names.
[SimonyiMR]

Packed Arrays
Since many applications cannot afford the storage overhead associated with strings, packing
array components (at least with byte granularity) seems necessary. The PACKED attribute has
been proposed (automatic packing is potentially incompatable with existing software).
[GeschkeS]

String Bodies
Some housecleaning on STRINGS is needed, especially if sequences are implemented; at the
least, a name should be attached to the string body. The body name could also be used to
make clear the pointerness of strings during initialization, a common source of trouble
among users. [GeschkeS]
Mesa 3.0 Tasks 3

Compiler

Compiling Options
A number of compiling options have been proposed (optimization, cross reference data,
warning messages); some user interface for specifying options needs to be designed. The
primitive Bcpl switch mechanism could be used. Some options might be included in the
source text.

Cross Reference Data
The routines which produce the cross reference dribble file need to be incorporated into the
early passes of the compiler. Some way of enabling this option needs to be specified.

Module Format
The format of an object module must be expanded to contain the information needed by the
new binder. This will require recompilation of all existing Mesa programs with the next
release. [Binder]

Program Parameters
The next release of the compiler will type check module parameters (now passed by START).
Passing more than five parameters will also be supported.

Signal Descriptors
In the next release, signal values will be structured like procedure descriptors, with a
module-unique signal index replacing the entry point number. Like procedure descriptors.
signal descriptors can be constructed on the fly. eliminating the need to store the signal
value in the global frame. [JohnssonMRI]

Source/Object .Mapping
The table produced by the compiler which records source text/object code correspondence
will be expanded to include the beginning of each source statement, rather than the
beginning of each source line. This will allow finer contol over breakpoint setting.
[SatterthwaiteMI. GeschkeMDI]

Static Link
Catch phrases and nested procedures could achieve a better instruction mix if their static
links pointed to the first local variable of the enclosing context instead of to the beginning
of that frame. [GeschkeMop]

Unwind
In the next release. UNWIND will be a predefined symbol. rather than an external signal.
Binding to this symbol will no longer be required.

Variant Record Packing
The current algorithm for packing fields in variant records can leave unused bits in some
variants. forcing the compiler to disallow comparisons (the unused bits contain garbage).
Removing the holes would make some variants one word longer.
Mesa 3.0 Tasks 4


Warning Messages
A number of potential errors could be recognized by the compiler and translated into
warning messages ("variable not referenced", for example). Some compiler option is needed
to specify whether these messages should be ignored or printed. Each condition needs to be
analysed carefully; warnings do no good if they are routinely ignored.


System Building

Binding (#)
The current binder is being replaced by a preprocessor designed to be run before any
loading takes place. It inputs a Configuration Description and combines all the modules it
specifies into a single package -- a Binary Configuration Description or BCD -- that can be
loaded as a unit. To ease conversion to the new scheme, the old !linder wU/ be retained
temporarily. [Binder]

Bootstrapping
Converting the compiler, the new and old binders, the system, and the debugger to the new
binding scheme is a straightforward but time consuming task (see Operations). At least
three full bootstraps will be required. Conversion of the system bootstrapping code
(BootMesa) will require a substantial rewrite of that system. In the interim, it can continue
to use the old binding scheme.

Loading
A new loader is required which understands Binary Configuration Descriptions. Eventually,
it should be capable of loading (and unloading) an arbitrary number of BCDS into a running
system. The initial implementation may be limited to a single user BCD. [Binder]

Packaging
Configurations can be packaged in several ways; for example, a configuration mayor may
not include sysmbol tables for debugging purposes. Utility functions will eventually be
required to package the code, symbols, and BCDS according to a number of options. [Binder]

SubSystems
The procedures which save the state of a running system in an Image file must be redesigned
to process BCDS. [Binder]

Version Checking
The increase in packaging options made possible with configurations requires more thorough
version checking to insure that all of the BCDS, the runtime system, and the debugger are
consistent. Version identification must be propagated not only among compiled modules,
but BCDS and Image files as well. [Binder]

Architecture

Byte Arrays
The present read and write byte instructions (RSTR and WSTR) have the Mesa string format
built into them. To support packed arrays, this offset needs to be specified in an alpha