XEROX
INFORMATION PRODUCTS GROUP
System Development Division
July 6, 1977
To:Distribution

From:Dick Sweet

Subject:
Mesa Language Committee minutes


The following items were discussed at the June 6 meeting:
"Noncontroversial" Items
Packed (=byte) arrays
Although these arrays are packed only to the byte level in the current implementation, the reserved word PACKED is used to designate this option rather than BYTE. For the first implementation, the arrays are to be allocated on full word boundaries and take an integral number of words. The SIZE operator will return this number of words, but the LENGTH operator will still return the cardinality of the index set. It will be at most a warning if the size of an element item is greater than 8 bits.
Empty intervals in type expressions (primarily for faking sequences).
Everybody seemed to think that these were a good idea, and they are essentially implemented.
Predeclaration of UNWIND
Done.
BOOLEAN as an enumerated type.
Done.
Interface to the upgraded signaller.
Done.
Cleaned-up layout of fields in (non-MACHINE DEPENDENT) records.
The principal reason is to make variant records comparable. The impact is that some variant records with both 1 word and multiword variants would require more than 1 word for the small variants. The disposition of this item was to discuss it further with users, principly Charles S.
Finer fine grain table (for closer control of breakpoint locations).
There was agreement that it should be done.
Somewhat Less Understood Topics
Cross reference data generation (needs switches).
This should be done on this release, with the data going to a file with the same primary name (.XREF?). It should be controlled by a switch (switch syntax is described in <Guarino>CommandProcessor.memo).
Warning messages, at least for unreferenced variables and unused import items (also needs switches).
There should eventually be degrees of severity for warnings, such as for special tests to insure proper humus style object use (I didn’t get down exactly what was meant by this). Rather than have a kludged switch syntax for this, the user would specify in the front of his file those messages that he wishes to see. There would be three options on the command line: see no warning message, see those specified by the text, see all messages. For this release there is to be only all-or-nuthin.
Predeclared names for bodies and text fields of strings.
StringBody: TYPE = RECORD [
length, maxlength: CARDINAL,
text: PACKED ARRAY [0..0) OF CHARACTER];
READ-ONLY as an attribute.
It was reasonably well understood that the question was not well understood at this point.
Mutable variant records.
This should be in this release, but the default value (IMMUTABLE or VICISSITUDINOUS) should be determined by polling the user community.
Preemption-safe assignment of multiword constants.
This will be done by disabling interrupts during the BLT.

As Time Permits (in order of priority)
Overlayed variant records.
The uniqueness of name applies to the declaration rather than to the fields used. It will still be necessary to name variants.
Machine dependent records as in Euclid.
The syntax chosen to specify "word i bits j to k" was (i:j..k), with ":0..15" a default size. These locations would appear after the identifier, before the colon. If one field is specified, all must be. The previous sentence becomes inoperative if the old MACHINE DEPENDENT RECORDs go away.
Listing included/imported identifiers in the module heading.
Does not seem to buy much compilation speed, since the identifiers are still in the included/imported context. It would, of course, restrict the search of that context, and hence be fast if done for all included/imported modules. Its major use is as a comment whose validity is enforced by the compiler.