Heading:qjk40(635)Mesa 6.0f Change Summaryy756qjk40\b24BPage Numbers: Yes  X: 527  Y: 10.5"qjk40Copyright c Xerox Corporation 1980l4445y45c\10f3 1f0Inter-Office Memoranduml4445y762\f5bTo	Mesa Users	Date	October 23, 1980l4445d2998e21(0,65535)(1,4445)(5,11684)(6,14146)\f7 2f0t2 1t0 10t6 1f7t0 4f0t7 1t0From	Dick Sweet	Location	Palo Altol4445d2998y716e25\f7 4f0t2 1t0 10t6 1f7t0 8f0t7 1t0Subject	Mesa 6.0f Change Summary	Organization	SDD/SS/Mesal4445d2998e25\f7 7f0t2 1t0b24t6B1f7t0 12f0t7 1t0XEROX       l508y644e14(2116)\f2 5f0Filed on: [Igor]<AlphaMesa>Doc>Summary60f.bravoe30(0,16263)(1,65535)(5,65535)(6,65535)\f7 47f0e10(2116)This memo outlines changes made in Mesa since the last alpha update (Mesa 6.0m, September 26, 1980).  These changes will shortly be incorporated into the Mesa 6.0 Change Summary to correctly reflect the differences between Mesa 5.0 and Mesa 6.0.  This document also includes a list of ARs fixed since 6.0m.  Since these versions of the programs are the final release ones, they say 6.0 instead of 6.0f.x2e12jk40(1799)Languagee18jk80\bThe language has been extended slightly.x2e12jk40Default Return Valuesx2e12jk40\i21IIn Mesa 6, one can specify a default value for a type or a field of a record.  Version 6.0f has some small changes in the interaction of defaults and procedure declarations.  The most notable is the ability to specify defaults on result records as well as parameter records.  The other difference is that default values in parameter (result) records are not inherited from types with default values.  This is best explained by considering some examples, followed by some rules that help explain them.x2e12jk40\230i14I. . .Ptr: TYPE = POINTER _ NIL;Proc: PROCEDURE RETURNS [a: BOOLEAN _ TRUE, b: CARDINAL _ 0, c: Ptr] =l4269x2e6k40\f6b6f0Bi4I1f7 4f0 3f7 7f0 3f7 4f6b1f0Bi5I1f7 9f0 1f7 7f0 2i2f7I8f0 3f7 4f0 2i2I1f7 8f0 6i6IBEGINl4904x2k40\f7 5f6b-- a initialized to TRUE, b initialized to 0, c initialized to NIL. . .RETURN[a: FALSE, c: exp];  -- returns [FALSE, 0, exp];.l4904x2k40\i4I16f7 4f0 2i1I19i1I16f7 4f6b5f0Bi1f7I6f0 4f7 5f0 2i6I16f7 5f0 5i3I2i1I. . .a _ FALSE;RETURN[c: exp];	-- returns [TRUE, 0, exp];.l4904x2k40(0,8224)\f6b5f0Bi5f7I5f0 2f7 6f0 1i6I15f7 4f0 5i3I2i1I. . .RETURN[a:, b: ];	-- illegal, c has no default (even though Ptr has a default) l4904x2k40\f6b5f0Bi1f7I6f0 1i7I15i1I29i3I. . .RETURN[a:, b:, c: ];	-- also illegal.  Although c has no default, its need for a	--  non-NULL value, inherited from type Ptr, is retainedl4904x2k40\f6b5f0Bi1f7I6f0 1i11I30i1I41f7 4f0 28i4I. . .RETURN; 	-- returns current values of a, b, and c.l4904x2k40\f6b5f0Bi1f7I6f0 32i5I5i2IEND;l4904x2k40(1799)\f7 3f0 1f6bNow for some rules:x2e12jk40\19bThere are two uses for default return values: to initialize values of local variables, and as defaults in constructors for result records.  The first use is probably the most valuable.l4269x2e12jk40If the type of a field in the result record has a default, the default applies for the initialization of the corresponding local variable, but does not apply in a constructor for the result record.  This protects you from assigning a value to a return variable and then forgetting to mention it in a RETURN statement, causing the default for its type to be returned.l4269x2e12jk40\300f7 6f0If the type of a field has a default, and it is not of the form "_ exp | NULL," then the field can be thought of as having a default of the form "_". That is, some non-NULL value must be given in all constructors for that field.l4269x2e12jk40\67i3I3f7 5f0 90f7 4f0The same non-inheritence of type defaults applies for parameter records as well as for result records.l4269x2e12jk40In Mesa 6, you cannot use the values of the parameters in defaults for return values; you must use constants or expressions involving variables global to the procedure.  This restriction will probably be lifted in future releases.l4269x2e12jk40Bindere18jk80\bThere have been several changesx2e12jk40Symbol Compressor Reappearsx2e12jk40\i27IThe symbol compressor is available again.  It can be found on the >Binder subdirectory of the release directory as SymbolCompressor.bcd.  To use it, load it ahead of the Biinder and specify the /x switch.  Thusx2e12jk40\66f8 7f0 42f8 20f0 59f8 2f0>Mesa.image SymbolCompressor Binder Foo/xl4269x2e12jk40\f8 41f0iwill create Foo.bcd and Foo.symbols (compressed). Compressed symbols are more compressed than they were in Mesa 5.  They contain just the (public and private) procedures and signals declared at the top level of the module.x2e12jk40\12f8 7f0 5f8 11f0 14i1I172iNew Global Switchesx2e12jk40\i19IThe switches to copy code (/c), to copy symbols (/s), and to compress symbols (/x) may now be given as global switches, and hence apply to all source files thereafter.x2e12jk40\27f8 2f0 20f8 2f0 28f8 2f0Copying (some) Symbolsx2e12jk40\i8I1i4I1iIn earlier versions, copying symbols was an error if not all of the symbol files were available at bind time.  The binder now copies all symbols that it can find, leaves the symbol table references for the other modules in the original (unavailable) files, and issues a warning.x2e12jk40Flashier Cursorsx2e12jk40\i16IThe cursor now changes as soon as warnings or errors are logged by the binder, in case you aren't suspecting them and want to stop things and look around.x2e12jk40Better Error Messagesx2e12jk40\iThe new Binder tries harder to give you the name of missing interface items.x2e12jk40Systeme18jk80\bThe file Mesa.symbols is again available as compressed symbols for the file Mesa.image.x2e12jk40\9f8 12f0 55f8 10f0Debuggere18jk80\bIn addition to many bug fixes, the following changes and additions have been made:x2e12jk40Sequence Indexingx2e12jk40\i17IThe Debugger now knows how to index sequences.  Thus, if seq is a pointer to a record containing a sequence part, say items, the interpreter commandsx2e12jk40\57i3I58i5Iseq[i]l4269x2e12jk40\i3I1i1Iandx2jk40seq.items[i]l4269x2jk40\i9I1i1Iare equivalent, and display the ith element of the sequence.x2e6jk40\32i1IBreak Exit Sourcex2e12jk40\iWhen you set an exit break on a procedure, you take the break on any return (they jump to a common instruction to make this easy on the debugger).  The debugger has no way of telling you which return was taken if there is more than one.  When asked for source, the debugger now shows the first line of the procedure declaration instead of the last return.x2e12jk40Debugger Looks for Symbolsx2e12jk40\i26IEven if a module has compressed symbols, the debugger will first look around for the file modulename.bcd and see if it is the original compiler output for that module (by checking the version stamp).  If so, it will use those symbols.  Thus, there is no need to Attach Symbols if the proper file is on the disk.  It makes sense to compress symbols for large systems and have around the complete symbols for specific modules undergoing detailed debugging. x2e12jk40\90f8 14f0 158f8 14f0Representation of Literals in Interpreterx2e12jk40\iThe debugger does a better job of determining signed/unsigned representation of values given to the interpreter.  For example, any octal number is assumed to be unsigned.x2e12jk40Fetch Toolx2e12jk40\i10IInstead of the File Tool, one should use Fetch.bcd, available on the release directory, to have a file transfer facility within XDebug.  The necessary Pup machinery is part of Fetch.bcd.x2e12jk40\41f8 9f0 78f8 6f0 42f8 9f0Editor Changesx2e12jk40\i14IThe command for moving the insert point in the editor has been changed to Control-Red (from Shift-Red) partly to benefit the sanity of Laurel 6 modeless editor users.  The debugger will now complain if you try to Kill session when you are editing a file (you can, however, Proceed).x2e12jk40\74f8 11f0 7f8 9f0 112f8 12f0 48f8 7f0Listere18jk80\b6BThe command scanner for the lister now allows optional quotes on string parameters.  Anything up to the next comma or right bracket is considered the parameter.  Of course you can still type them, and must if the parameter contains a comma or right bracket (I can't think of any lister commands where this makes sense, though).  In addition, there are several new lister commands of general interest.e12jk80Implementors["FileName"]e12jk80\f8FileName is a list of BCDs, separated by spaces (such as object.system).  The lister produces a file root[FileName].iml (e.g. object.iml) that contains a listing of exported interfaces, together with the name of the program module implementing each interface item.  If the given interface is also named in the input file, the output will also include those interface items not implemented by any programs in the collection.  In order to run this command, you have to have symbols for all of the exported interfaces as well as all of the items named in the input file.l4269e6jk80\f8 8f0 14f7 3f0 32f8 13f0 2b2B27i4f8I14f0 7f8 10f0Stamps["FileName"]e12jk80\f8FileName is a Compiler or Binder or Packager output BCD.  The lister produces the file Filename.bl that contains the version stamp of any modules bound in the BCD, and the version stamps for all imported and exported interfaces.  This command should replace most uses of the Bcd["FileName"] command and produces output much easier to read.l4269e6jk80\f8 8f0 44f7 3f0 32f8 11f0 61f7 3f0 113f8 16f0UnboundExports["FileName"]e12jk80\f8FileName is a Compiler or Binder or Packager output BCD.  The lister produces the file FileName.xl that shows, for each exported interface, which items are not implemented.  In order to run this command, you need the symbols for any exported interface that is not completely implemented.  The lister will complain about missing ones.l4269e6jk80\f8 8f0 44f7 3f0 32f8 11f0Version["FileName"]e12jk80\f8FileName is a Compiler or Binder or Packager output BCD, or an image file.  The lister shows, on Mesa.typescript, the version stamps for the file, its creator, and its source. l4269e6jk80\f8 8f0 44f7 3f0 42f8 15f0Command Centrale18jk80\bThe debugger will now complain if you try to exit the debugger (compile!, bind!, run!, or go!) while editing a file.x2e12jk40\64f8 8f0 2f8 5f0 2f8 4f0 5f8 3f0x2e12jk40Distribution:Mesa UsersMesa GroupSDSupportl3528d2998x2e12k40(2116)