XEROX BUSINESS SYSTEMS System Development Division October 27, 1977z18556l3033e10c(635)\f2 5f0 1f6b17f0Bi28I To: Distribution From: Dick Sweet Subject: Mesa Language Working Group minutes The Language Working Group met on 25 October, 1977. The first item considered was an ordering of priorities for languages changes for Mesa 4.z18556e12jk70\f1 3t2 1f0t0 14f1 5t2 1f0t0 11f1 9t2 1f0t0 36f1 1f0 First Priority Groupz18556e12jk70\i20I Open Proceduresz18556l4269e6jk70 Monitorsz18556l4269jk70 Long and Based Pointersz18556l4269jk70 String Constantsz18556l4269jk70 Second Priority Groupz18556e12jk70\i21I Sequences Allocation Mutable variant records Pointer Arithmeticz18556l4269e6jk70 Default Parameters and Fieldsz18556l4269jk70 Portsz18556l4269jk70 Field Descriptorsz18556l4269jk70 Included Identifiers Long Integers, Realz18556l4269jk70 Third Priority Groupz18556e12jk70\i20I Machine Dependent Recordsz18556l4269e6jk70 Main body as a Procedurez18556l4269jk70 Painted Integersz18556l4269jk70 Declaration Syntax (anywhere in body, after BEGIN, etc.)z18556l4269jk70 Fourth Priority Groupz18556e12jk70\i21I LOOP statementz18556l4269e6jk70 Coerce clause z18556l4269jk70 It was decided that someone (Ed, John, and Dick?) should write a proposal for sequences, allocation, mutable, pointer arithmetic, and string constants, which are thought to be interconnected. The previous proposals for long pointers and based pointers should be dusted off and recirculated.z18556jk70 A discussion of Open Procedures followed, with the following points made:z18556e12jk70 Some reorgainzation of the Symbol Table will obviously have to be made.z18556l4269e6jk70 Where should a procedure be specified as open? At the declaration, it is declared as potentially inline, along with the default way of calling. A call can specify a means of calling other than the default.z18556l4269e6jk70 What does it mean to EXPORT an open coded procedure? One would have to have a body for the procedure and EXPORT a closed instance. As I recall, the automatic generation of a body was not a popular idea.z18556l4269e6jk70\21f7 6f0 79f7 6f0 What about an open coded procedure whose body is in a DEFINITIONS module when someone wants to call it in a closed manner? There should be some way for an implementer module to say "Put the code here."z18556l4269e6jk70\54f7 11f0 It was noted that the debugger's fine grain table is not well suited to setting breaks inside an open coded instance.z18556l4269e6jk70 Likewise, if there are copies of parameters and/or local variables of the open coded procedure, the debugger may have trouble. This also goes for the general expansion of "contexts" provided for by new declaration syntax on a compound statement basis.z18556l4269e6jk70 Several consecutive open coded calls should share storage for local variables.z18556l4269e6jk70 When should the compiler make local copies of input parameters? This requires global flow analysis or more to do in the general case. It was deemed safe not to copy in the following case.z18556l4269e6jk70 1. The variable is not assigned to or subject to the @ operator.z18556l5539e6jk70 2. There are no field assignments using pointers.z18556l5539e6jk70 3. There are no procedure calls.z18556l5539e6jk70 There was a discussion of other fuzzy features of local variables that would make them substitutable, but no real conclusions. It would be nice to allow a terminal procedure call, so that the Pilot people could repackage parameter lists efficiently, e.g.z18556l4269e6jk70 p: PROCEDURE [h: Handle, a,b,c,...] = INLINEz18556l5539e6jk70 BEGIN h.p[a,b,c,...]; END;z18556l5539k70 It has also been observed that the ability to SHARE program modules makes all global variables suspect after an external procedure call.z18556l4269e6jk70\46f7 5f0 Syntax Discussionz18556l4269e18jk70\i17I It was agreed that the attribute of being open coded should appear on the body. The popular choice of keyword was INLINE. Syntax was needed for the following casesz18556l4269e6jk70\115f7 6f0 1. At the declaration, to specify INLINE, and to specify the default method of calling (inline or out-of-line). Butler suggested INLINE ON DEMAND for a default of out-of-line.z18556l5539d4904e6jk70(0,5536)\34f7 6f0 90f7 16f0 2. At the declaration, to specify that a body is also to be compiled. This would presumably be automatic if the default calling method is out-of-line.z18556l5539d4904e6jk70 3. In an implementer module, when the body is in a definitions module, something to specify "Put a body here." Presumably the same keyword would work for 2 and 3.z18556l5539d4904e6jk70 4. At the call site, whether to call in or out of line. No particular resolution.z18556l5539d4904e6jk70