.so tmac.tr
.ds 1 \fIe1\fP
.ds 2 \fIe2\fP
.ds n \fIen\fP
.sv |1.25i
.de Ip
.IP \(bu \w'\(bu'u+1n
..
.LP
.ce 1
\f3Release 5g of Icon\fR
.sp 1
.PP
Release 5g of Icon is an implementation of Icon that runs on both
PDP-11s and VAXs under the UNIX* operating system.  This document
.FS
*UNIX is a trademark of Bell Laboratories.
.FE
is a brief summary of this release.
.SH
Changes
.LP
.in 5n
.Ip
System configuration is now performed by a shell script rather
than having the installer manually edit a number of files.
.Ip
Interpretable files are made to appear to be executable
on both the VAX and the PDP-11.
.Ip
The \fB&output\fR and \fB&errout\fR output streams are now line buffered
by default.  This provides a substantial performance improvement
for programs that generate a large amount of terminal output.
.Ip
There are several language extensions to the Icon language that can be
optionally included in a system.
.Ip
Several performance enhancements have been made to various
components of the system.  A number of minor bugs have been fixed.
.PP
.in 0
.SH
Known Bugs
.PP
This list ennumerates all known bugs in Release 5g 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
Program malfunction may occur if \fBdisplay()\fR is used in a co-expression.
.Ip
In some cases, trace messages may show the return of subscripted
values, such as \fB&null\^[2]\fR, that would be erroneous if they were
dereferenced.
.Ip
File names are truncated to 14 characters by UNIX.  If such a truncation
deletes part of the terminating \fB.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 \fBlist()\fR function is called, when
literal lists are specified, and when the \fBsort()\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 \fBfopen()\fR routine that under certain
conditions returns a \fBFILE\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
runtime 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 like \fBx := create ...\fR in a loop, and
\fBx\fR is not a global variable, the unreferenceable expression stacks
generated by each successive \fBcreate\fR operation are not
garbage collected.  This problem can be circumvented
by making \fBx\fR a global variable or by assigning a value to \fBx\fR before
the \fBcreate\fR operation, e.g., \fBx := &null; x := create ...\fR.
.Ip
Overflow of a co-expression stack due to excessive recursion is not detected
and may cause mysterious program malfunction.
.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
can 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
.LP
.nf
.sp 4
March 14, 1983
.sp 2
Ralph E. Griswold
William H. Mitchell
