04/11/77 This document lists the differences between the new version 2 APL, and the old Multics Version 1 APL (APL User's Guide, Honeywell Order Number AK95, Revision 0). All page numbers refer to the above manual. This document is intended for the user who is converting workspaces from Version 1 to Version 2. It is not intended to be a definition of Version 2 APL; indeed, only the incompatible differences are listed here. A complete description of Version 2 APL may be found in the revised edition of the Multics APL manual, AK95-1. A summary of Version 2 APL may be found in apl.summary.info. In general, the language implemented by Version 2 APL is a superset of Version 1 APL. One caveat should be noted, however. Different algorithms have often been used to make Version 2 APL faster than Version 1 APL. Thus, the exact values returned by the trigonometric, matrix inversion, and similar operators may be different in Version 2. SECTION I. No changes. SECTION II. 1. The apl command (page 2-1) now takes arguments, whereas old apl ignored any arguments given on the command line. 2. The internal character set (page 2-2) has been slightly modified. The following APL graphics have been given new codes, and the old codes restored to their ASCII graphic: G__r_a_p_h_i_c O__l_d C__o_d_e N__e_w C__o_d_e dieresis 042 245 omega 043 246 iota 044 247 rho 045 250 times 046 251 alpha 100 252 upper minus 136 253 (now called overbar) nabla 140 254 (now called del) left arrow 173 255 right arrow 175 256 3. The typing conventions for ASCII terminals has changed drastically (p. 2-3). Old apl used mnemonics, new apl uses overstrikes. 4. Some of the exact rules for canonicalization (p. 2-4) have changed. It is now possible to erase a kill character by overstriking the two. 5. The details of APL input line processing (p. 2-6) have changed. In general, such detail is unimportant to the apl user. 6. The handling of the QUIT, or ATTN button, (p. 2-8) is different in new apl. New apl conforms more closely to the usage in other apl implementations. In particular, it is no longer possible to exit apl by pressing the ATTN button; only the )QUIT, )OFF, or )CONTINUE system commands will exit apl. SECTION III. 1. The internal implementation of type (p. 3-2) has changed. Old apl subdivided numeric values into bit, integer, or double-precision floating-point. The amount of storage occupied by a numeric value depended upon its type (although the apl user was hard-pressed to see any difference between the three types). New apl stores all numeric values as double-precision floating-point numbers. A type field is maintained by new apl to indicate which floating-point numbers are known to be bits or integers, for efficiency. 2. The exact representation of printed numeric values (p. 3-3) has changed. Matricies of non-negative values now omit the column formerly reserved for the sign. 3. The definition of the modulo operator (p. 3-11) has changed. Modulo is now defined consistently for negative or zero left arguments. New apl calls this operator "residue", to be consistent with other implementations. 4. The definition of "fuzz" has changed in new apl ("fuzz" is now called the comparison tolerance). Thus, the exact operation of the operators that depend on fuzz has changed slightly. Most users should not notice this change. 5. The exact definition of ceiling and floor (p. 3-12) has changed because they depend on the comparison tolerance. 6. The sequence of values produced by the random number operator (p. 3-13) has changed. This operator now returns the same sequence of random numbers as APL\360. The SETLINK library function and the )SETLINK system command have been replaced by the quad-RL system variable. 7. The exact definition of the comparison operators (p. 3-14) has changed because they depend on the comparison tolerance. 8. The exact definition of the logical operators (p. 3-15) has changed because they depend on the comparison tolerance. 9. The trigonometric operators (p. 3-16) have been changed to use the same algorithms as the Multics PL/I, FORTRAN, and BASIC compilers. This change makes new apl more consistent with the other Multics languages. No loss of accuracy should be noticed. 10. The definition of monadic transpose (p. 3-25) has changed. Old apl transposed the last two dimensions; new apl transposes all the dimensions. Many apl examples in old textbooks rely on the old definition; before you report a bug in the new apl, check for problems with monadic transpose. 11. Since the definition of the encode operator (p. 3-29) depends of the definition of modulo, it also changes (see modulo, above). 12. The results returned by the deal operator (p. 3-30) are now identical to those returned by APL\360. 13. The definition of various i-beam functions (p. 3-32) has changed. (to be supplied). 14. The new function editor is completely different from the old function editor (p. 3-49 examples). 15. The comments about dependence upon unspecified ordering of evaluation (p. 3-51) are just as true for new apl as it is for old apl. Version 2's order of evaluation is different from Version 1's. Since the APL language prohibits dependence upon order of evaluation, no legal APL program should be affected by this change. However, since neither Version 1 nor Version 2 enforces this restriction, it is up to the user to write correct programs. 16. Not all of the library functions (p. 3-64) are available in version 2 apl. The SETLINK, SFCI, SFEI, SFII, and FUZZ functions are not available. 17. The exact positioning of the error marker, and the character that is the error marker, are different in new apl. New apl uses a caret (and-sign) rather than the vertical bar. The comments on page 3-68 about which streams are used for reading and writing after an error do not apply to new apl. 18. New apl causes a SYSTEM ERROR rather than a "panic" (p. 3-74). The workspace may or may not be in a consistent state after such an error. Users should proceed with caution. SECTION IV. 1. The )FUZZ system command (p. 4-6) has been replaced by the comparison tolerance system variable, quad-CT. 2. The )SETLINK system command (p. 4-7) has been replaced by the random link system variable, quad-RL. 3. The )SFII, )SFEI, and )SFCI system commands (p. 4-8) are not available in new apl. 4. The suffix appended to the entryname of a saved apl workspace (p. 4-18) has been changed from ".apl" to ".sv.apl". 5. The )CONTINUE system command now names the workpace Person_id.sv.apl, and places it in the user's home directory (p. 4-25). 6. The )LIB system command (p. 4-26) no longer calls the "list" command directly. 7. Version 2 is able to copy a Version 1 workspace using its )V1COPY and )V1PCOPY system commands. Their syntax is identical to the normal )COPY and )PCOPY, the only difference is that they know how to find, and then convert, Version 1 workspaces to the Version 2 format. There is no way to )LOAD a Version 1 workspace, it must be copied. These commands automatically translate old character codes into the proper new codes (point #1, above). The )V1LIB and )V1DROP commands may be used to list and delete Version 1 worskpaces, respectively. 8. The calling sequence for external functions (p. 4-29ff) has changed. See apl_external_fcns.runout. SECTION V. The Version 2 editor is completely different from the Version 1 editor. Version 1 used an editor that was similar to edm. Version 2 uses an editor that is identical to the APL editor used in APL\360 and APLSV. The edm-like editor is no longer supported. SECTION VI. This section is a sample terminal session of Version 1 APL. Most of the examples will work as shown is Version 2, but some (such as EPI on p. 6-10) rely on features that have changed from Version 1 to Version 2 APL. SECTION VII. This section is a comparison of Version 1 APL with APL\360. For a comparison of Version 2 APL with APL\260, refer to apl_vs_aplsv.incompat.info and apl_vs_aplsv.extensions.info. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved