XEROX
BUSINESS SYSTEMS
System Development Division
November 15, 1977
To:Distribution

From:Dick Sweet

Subject:
Mesa Language Working Group minutes

The Language Working Group met on 11 November, 1977. The items considered were inline procedures and monitors.
Inline Procedures
It was decided that while the design from the previous meeting about calling inline or out of line was ok, it was a lot of new syntax. The desire to call an INLINE procedure out of line can be largely met by declaring another procedure whose entire body is an inline call of the first one. The current proposal is to implement INLINE procedure that are callable only in an open coded fashion. It was also noted that inline procedures allow for some approximation of default parameters.
Monitors
Recall the items from last week
1. Independent FORK
2. Return type of a FORK
3. Questions of scope
4. Initialization of Monitors and condition variables
5. Monitor priority
6. Condition timeout
7. Aborts
8. Interaction with SIGNALs
Item 3. Scope
Scope, has become a discussion of the way in which the actual lock of a monitor is specified. The following syntax was chosen:
The basic style, with lock implicitly supplied:
M: MONITOR [...] = ...
The pack or multiple MDS style:
M: MONITOR [...,arg,...] LOCKS arg = ...-- if simple dereferencing of arg will lead to the lock
M: MONITOR [...,arg,...] LOCKS arg USING f(arg) = ...-- otherwise
The object oriented style:
M: MONITOR [...] LOCKS arg: Type USING f(arg) = ...
Item 4. Initialization
Monitor locks and condition variables need to be initialized before using. It was pointed out the the usual objections to automatic initialization do not apply, i.e. that the user may not need to do so and that it would be extra code.
It was decided that the language constructs ALLOCATE USING and MAKE AT should be elevated to priority 1. Either would set the tag of bound variant records, the length of sequences, and initialize monitored records and condition variables. An automatic "MAKE" should be done on any such item declared in the frame. In the "basic" monitor style, the lock is automatically initialized.