[Icon home]

Release Notes for Version 9.4 of Icon

Gregg M. Townsend
Department of Computer Science
The University of Arizona

www.cs.arizona.edu/icon/v940/relnotes.htm
Last updated June 11, 2001

Introduction

Version 9.4 of Icon is a modified and repackaged implementation based on version 9.3.2 of Icon. The changes make it easier to maintain, install, and use under Unix while retaining potential portability to other systems. Most significant are changes to path searching, described below, and the inclusion of the Icon program library as a standard part of all Unix source and binary distributions.

The Icon language is unchanged, and this 9.4 Unix implementation remains compatible at the source level with Icon 9.3 for Windows.

Recent feature additions

New features added since the publication of the Icon books are described below.

Reading foreign text files

(new with Version 9.3.1 of Icon)

The function read() recognizes three kinds of line terminators when reading a file opened in translated mode: Windows (CR+LF), Macintosh (CR), or Unix (LF). Consequently, text files created on one platform can be read by an Icon program running on a different platform.

Reading directory contents

(new with Version 9.3.2 of Icon)

The files in a directory can be listed by opening the directory as a file. Subsequent reads return the names of the files contained in the directory. The names are returned in no particular order, and for Unix, the directories "." and ".." are included.

Path searching

(new with Version 9.4 of Icon)

Under Unix, colons (:) may now separate directories in the LPATH and IPATH environment variables as an alternative to spaces. The Icon translator and linker search these paths when looking for $include and link files respectively.

The Icon program library is now searched automatically, but LPATH and IPATH can still be set to control the search order. For version 9.4, the effective path in each case is:

  1. the current directory
  2. any directories named by the environment variable
  3. the Icon library directory

Other changes affect the configuration of Icon at installation time and the way executable Icon programs locate the interpreter. These changes, which are transparent to most users, are discussed in more detail on the File Organization page.

Other Icon Changes

Several areas of the Icon implementation have been cleaned up, in particular the run-time initialization code, and some obsolete configurations have been removed.

With one clearly marked exception, programs in the standard test suite now generate reproducible output.

The following problems have been corrected:

Library Changes

The program library has been incorporated into the main Icon source tree and is routinely built along with icont and iconx. Tests for most of the core library functions and loadable C functions have been incorporated the standard test suite, and some additional consistency tests were developed.

Numerous changes were made throughout the library to fix linking problems, to fix typos and formatting, and to support building via Makefiles.

Some files that were miscategorized as graphics or non-graphics have been moved. Duplicate files in the cfuncs and packs/loadfunc directories have been eliminated. Some other obsolete files were also removed.

Other significant changes were:

procs/datetime		fixed dayoweek() to get all twelve months right
procs/factors		fixed divisors() to consistently return all factors
			fixed genfactors() for some failing cases
			added some minor optimizations
procs/genrfncs		added several new sequence generators
procs/io		modified to allow ":" as a path separator under Unix
procs/lists		fixed fatal bugs in lminlen() and lmaxlen()
			added several new list manipulation procedures
procs/lstfncs		added: procedures to produce lists from sequences
procs/numbers		fixed decimal() for values where remainder repeats
procs/pdco		added several new control operations
procs/periodic		added: procedures related to periodic sequences
procs/permutat		added: procedures for permutations
procs/polynom		added: manipulate multi-variate polynomials
procs/pqueue		added new priority queue procedures
procs/rational		added real2rat(v, p)	#: convert real to rational
			added medrat(r1, r2)	#: rational mediant
procs/records		added fieldnum(R, s)	#: return index of field R.s
procs/seqops		replaced: procedures to manipulate T-sequences
procs/strings		modified fchars() to break ties lexically
			renamed permute() to permutes()

cfuncs/icall.h		fixed reading of misaligned doubles by RealVal()
cfuncs/fpoll.c		support fpoll() under BSD Unix flavors

gprocs/drawlab		modified to let the caller control the window size

progs/htprep		modified to improve quoting
progs/ipatch		modified to understand v9.4 headers as well as v9.3
progs/unclog		added: program to reformat CVS logs

gprogs/breakout		added: a new breakout game
gprogs/dlgvu		modified to allow interruption while drawing labels
gprogs/gallery		modified to recognize some nonstandard JPEG files
gpacks/tiger		modified to allow interruption of drawing
gpacks/xtiles		fixed the usage message

packs/loadfunc/cspace	increased the default window size

Other Documentation

See the documentation guide for an overview of the available Icon documentation.

For installation instructions, see Installing Binaries or Building from Source as appropriate.