.so tmac.tr .sv |1.25i .de Ip .IP \(bu \w'\(bu'u+1n .. .LP .ce 10 \f3Version 5.9 of Icon\fR .sp 2 Ralph E. Griswold, Robert K. McConeghy, and William H. Mitchell .sp August 22, 1984 .ce 0 .sp 1 .PP Version 5.9 of Icon is a modification of Version 5.8 of Icon. The \*U implementation runs on both PDP-11s and VAXs. This document is a brief summary of Version 5.9. See also References 1, 2, and 3. .Un .SH Changes .LP .in 5n .Ip An optional language extension provides sets as a built-in data type [3]. .Ip The Icon compiler has been deleted, leaving only the interpreter. A ``personalized interpreter'' facility has been added to allow individuals to maintain customized versions of the Icon run-time system [5]. This facility replaces the former use of external functions with the Icon compiler to augment the function repertoire of Icon. .Ip The implementation of the table data type has been redone to increase the efficiency of table lookup. .Ip There is a new keyword, \*M&options\fR, whose value is a string listing the options used for installing Icon at the local site [3, 4]. .Ip Considerable work has been done throughout the Icon system to improve the quality of the code and to remove nonportable constructs. .Ip The source code has been commented extensively. .Ip A number of minor bugs have been fixed. .Ip The Icon program library has beed reorganized and new material has been added to it [6]. .Ip The Icon distribution hierarchy has been reorganized and new material has been added to aid in testing and porting to new computers [4]. .in 0 .SH User Impacts .LP .in 5n .Ip Persons who formerly used the Icon compiler with external functions will need to convert to personalized interpreters. .Ip The internal organization of tables is different from earlier implementations. For example, if \*Mt\fR is a table, the order of elements generated by \*M!t\fR generally is different from before. Similarly, the value of \*M?t\fR is likely to be different. .Ip The functionality of some components of the Icon program library has been changed. .in 0 .bp .SH Known Bugs .PP This list ennumerates all known bugs in Version 5.8 of Icon. If you find a bug that is not in this list, please contact us. .LP .in 5n .Ip The translator does not detect arithmetic overflow in conversion of numeric literals. Very large numeric literals may have incorrect values. .Ip Integer overflow on multiplication and exponentiation are not detected during execution. This may occur during type conversion. .Ip Line numbers may be wrong in diagnostic messages related to lines with continued quoted literals. .Ip In some cases, trace messages may show the return of subscripted values, such as \*M&null\^[2]\fR, that would be erroneous if they were dereferenced. .Ip File names are truncated to 14 characters by some versions of UNIX. If such a truncation deletes part of the terminating \*M.icn\fR of a file that is input to the translator, mysterious diagnostic messages may occur during linking. .Ip On PDP-11s, list blocks can contain no more than 4090 elements. List blocks are created when the \*Mlist()\fR function is called, when literal lists are specified, and when the \*Msort()\fR function converts a table into a list. It should be noted that it is possible for a list to grow to beyond 4090 elements; the limitation is only upon the size of the list when it is created. .Ip There is a bug in the 4.1bsd \*Mfopen()\fR routine that under certain conditions returns a \*MFILE\fR pointer that is out of range when one tries to open too many files. On systems where this bug is present, it may manifest itself in the form of run-time Error 304 when one tries to open too many files. (On 4.1bsd systems this limit is usually 20 files.) .Ip If one has an expression such as \*Mx := create \*(El \fR in a loop, and \*Mx\fR is not a global variable, the unreferenceable expression stacks generated by each successive \*Mcreate\fR operation are not garbage collected. This problem can be circumvented by making \*Mx\fR a global variable or by assigning a value to \*Mx\fR before the \*Mcreate\fR operation, e.g., \*Mx := &null; x := create \*(El \fR. .Ip Overflow of a co-expression stack due to excessive recursion is not detected and may cause mysterious program malfunction. .Ip Program malfunction may occur if \*Mdisplay()\fR is used in a co-expression. .Ip The garbage collector was designed for machines with small address spaces and as such is not well-suited for machines like the VAX. No empirical studies have been made, but it is suspected that performance of the garbage collector could be improved substantially on the VAX. In particular, if the user attempts to create a very large data object that will not fit into memory, (such as a million-element list), it takes the system an inordinately long time to determine that the object can not be allocated. .in 0 .SH References .LP 1. Griswold, Ralph E. \fIAn Overview of the Icon Programming Language\fR. Technical Report TR 83-3a, Department of Computer Science, The University of Arizona. May 1983. .LP 2. Griswold, Ralph E. and Madge T. Griswold. \fIThe Icon Programming Language\fR. Prentice-Hall Inc., Englewood Cliffs, New Jersey. 1983. .LP 3. Griswold, Ralph E., Robert K. McConeghy, and William H. Mitchell. \fIExtensions to Version 5 of the Icon Programming Language\fR. Technical Report TR 84-10a, Department of Computer Science, The University of Arizona. August 1984. .LP 4. Griswold, Ralph E. and William H. Mitchell. \fIInstallation and Maintenance Guide for Version 5.9 of Icon\fR, Technical Report TR 84-13, Department of Computer Science, The University of Arizona. August 1984. .LP 5. Griswold, Ralph E., Robert K. McConeghy, and William H. Mitchell. \fIPersonalized Interpreters for Icon\fR. Technical Report TR 84-14, Department of Computer Science, The University of Arizona. August 1984. .LP 6. Griswold, Ralph E. \fIThe Icon Program Library\fR. Technical Report TR 84-12, Department of Computer Science, The University of Arizona. August 1984.