Notable changes in version 9.4.3:
The system-specific Icon configurations have been reorganized and renamed.
The several BSD configurations have been merged into one.
The macintosh configuration now supports the loadfunc function.
A new porting guide has been written, and a new posix configuration
has been added as a starting point in constructing new ports.
The core library files remain stable. Notable changes include:
- procs/dijkstra new procedures implement Dijkstra's control structures
- procs/html add procedure for canonicalization of paths
- procs/matrix2 new procedures for matrix manipulation
- procs/nestlist new procedures for representing nested lists as strings
- procs/printf add %e format and fix a rounding problem
- progs/noise new program for producing a random bitstream
- progs/unclog improve logic for combining adjacent entries
- gprogs/dlgvu improve coverage map; allow altitude in GPS data
- gprogs/gallery faster thumbnail loading for JPEG images
- gprogs/img many new features
- gprogs/sier better color choices
- gprogs/trkvu accept GPS track logs with altitude as the last field
The undocumented save function, which only worked on a few platforms, has been removed.
Approved by <tnn>.
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
Several changes are involved since they are all interrelated. These
changes affect about 1000 files.
The first major change is rewriting bsd.builtin.mk as well as all of
the builtin.mk files to follow the new example in bsd.builtin.mk.
The loop to include all of the builtin.mk files needed by the package
is moved from bsd.builtin.mk and into bsd.buildlink3.mk. bsd.builtin.mk
is now included by each of the individual builtin.mk files and provides
some common logic for all of the builtin.mk files. Currently, this
includes the computation for whether the native or pkgsrc version of
the package is preferred. This causes USE_BUILTIN.* to be correctly
set when one builtin.mk file includes another.
The second major change is teach the builtin.mk files to consider
files under ${LOCALBASE} to be from pkgsrc-controlled packages. Most
of the builtin.mk files test for the presence of built-in software by
checking for the existence of certain files, e.g. <pthread.h>, and we
now assume that if that file is under ${LOCALBASE}, then it must be
from pkgsrc. This modification is a nod toward LOCALBASE=/usr. The
exceptions to this new check are the X11 distribution packages, which
are handled specially as noted below.
The third major change is providing builtin.mk and version.mk files
for each of the X11 distribution packages in pkgsrc. The builtin.mk
file can detect whether the native X11 distribution is the same as
the one provided by pkgsrc, and the version.mk file computes the
version of the X11 distribution package, whether it's built-in or not.
The fourth major change is that the buildlink3.mk files for X11 packages
that install parts which are part of X11 distribution packages, e.g.
Xpm, Xcursor, etc., now use imake to query the X11 distribution for
whether the software is already provided by the X11 distribution.
This is more accurate than grepping for a symbol name in the imake
config files. Using imake required sprinkling various builtin-imake.mk
helper files into pkgsrc directories. These files are used as input
to imake since imake can't use stdin for that purpose.
The fifth major change is in how packages note that they use X11.
Instead of setting USE_X11, package Makefiles should now include
x11.buildlink3.mk instead. This causes the X11 package buildlink3
and builtin logic to be executed at the correct place for buildlink3.mk
and builtin.mk files that previously set USE_X11, and fixes packages
that relied on buildlink3.mk files to implicitly note that X11 is
needed. Package buildlink3.mk should also include x11.buildlink3.mk
when linking against the package libraries requires also linking
against the X11 libraries. Where it was obvious, redundant inclusions
of x11.buildlink3.mk have been removed.
Notable changes in this latest version are listed here. Some code
cleanup work and documentation editing has also been done.
256-color limit removed
Icon's X-windows interface previously limited each window to 256
colors at one time. This limitation has been removed for the TrueColor
displays provided by most modern computers. Median-cut quantization is
used to select 256 image colors when WriteImage() is called to write a
GIF file.
Library changes
As usual, several files in the Icon program library have been added or
edited. The core library files, however, remain stable.
Minor changes
* The command "icon - [args]" can now be used to execute a source
program read from standard input.
* A new "icont -N" flag suppresses embedding of an iconx path in the
generated executable
* The configuration directory has been restructured.
* Several obsolete configurations have been removed.
* The environment variables HEAPSIZE and BLOCKSIZE no longer
function as undocumented alternatives to BLKSIZE. The GNU ls
utility uses BLOCKSIZE for other purposes, leading to confusion.
* "make Install" has been changed to never delete anything. It now
creates a new directory rather than altering an existing one.
Changes:
* Support for NetBSD on PowerPC based systems.
* An Icon source file can be made executable under Unix by prefixing it
with a comment line
#!/usr/bin/env icon
and setting its execute permission bit. This uses a new icon command,
which in another form allows a small Icon program to be embedded within
a shell script. See the new man page for details. The traditional icont
command remains available for less specialized purposes.
* The performance of large sets and tables has been improved.
* Some minor bugs have been fixed.
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 [2]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:
* The sign bit was lost when converting a real to a large integer.
* A duplicate close(f) could crash the interpreter.
* Very large coordinate values were silently mishandled.
* Window attributes over 127 characters long caused a segfault.
* A segfault during traceback could produce an infinite loop.
* A file inclusion bug in gcc 2.96 prevented Icon from building.
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
For the Icon source code, this is primarily a maintenance release. The
code has been reworked and simplified to increase portability. An ANSI
C compiler is now required, and UNIX systems are expected to supply a
POSIX (1003.1-1988) library.
Version 9.3.2 adds one new feature:
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.
pages that are installed will be gzip-compressed, if MANZ is set, or
not if MANZ is not set. If the package uses bsd-style .mk files, the
variable MANCOMPRESSED_IF_MANZ should be set to a value of "yes" in
the package Makefile. This replaces the previous method of specific
inclusion of bsd.prefs.mk, followed by a check for MANZ and
conditional assignment of MANCOMPRESSED.
Add appropriate documentation, and change all necessary ocurrences in
package Makefiles.
- New, optional Makefile variable HOMEPAGE, specifies a URL for
the home page of the software if it has one.
- The value of HOMEPAGE is used to add a link from the
README.html files.
- pkglint updated to know about it. The "correct" location for
HOMEPAGE in the Makefile is after MAINTAINER, in that same
section.
Modify FreeBSD's ecvt patch, so that it's commented out in FreeBSD,
but still short-circuits in other 4.4-lite derived systems.
Add NetBSD/i386-specific files.
Only tested on NetBSD/i386 (1.2G) so far.