A summary of the V2.11.2 patch release changes is listed below. For further details about system changes see the "notes.v211" file in the iraf$local directory. Detailed revisions notes for each application package are in the package directories in a file called Revisions, i.e., digiphot$Revisions.
This works by having the shell script effectively replace the login.cl file, hence startup is faster and flexibility is maximized, but the script is responsible for any initialization normally done by login.cl (e.g. loading packages). This implementation is still fairly basic, e.g. the argument handling facilities are limited, but it works, and is fast.
On a Unix system, the first line of a script which calls the CL as a shell should be something like "#!/usr/local/bin/cl.e -f", where /usr/local/bin/ would be either a copy of the cl.e executable, or a link such as cl.e -> /iraf/iraf/bin.ssun/cl.e (don't call the link "cl", as this name is already used for the shell script used to start up an interactive iraf session).
A new way of reading scaled 16 bits FITS images is now possible with a significant improvement in efficiency. The FK now does on the fly convertion when BSCALE and BZERO are different from 1 and zero and BITPIX is 16 or 8.
IMAGES:
IMCOMBINE:
* Added a new output which is a pixel mask identifying which pixel in
which input image is rejected or not included in the final output.
The internal calculation type was changed from the highest precedence
type of the input images to the highest of the input and output.
This allows setting the output type to be real to force computation
in real for integer input images. Not doing this could cause severe
truncation errors if users specify there own scaling values.
The grow option to exclude pixels near a rejected pixel now works
in two dimensions.
IMEDIT:
The temporary editing buffer image was made into a unique temporary
image rather than the fixed name of "epixbuf".
IMCOORDS:
The IMCOORDS package tasks CCFIND, IMCCTRAN, and SKYCTRAN were modified
to support both the old and new DATE-OBS format.
Support for an experimental zenithal polynomial WCS was added to the
IMCOORDS package tasks.
Support for the ICRS (Hipparcos) celestial coordinate system was
added to the IMCOORDS package tasks.
IMGEOM/IMMATCH:
* The IMGEOM and IMMATCH package SHIFTLINES, IMSHIFT, XREGISTER, ROTATE,
MAGNIFY, IMLINTRAN, GEOTRAN, GREGISTER, WREGISTER, and SREGISTER tasks
were upgraded to support the new sinc and drizzle resampling options.
ASTUTIL:
All tasks which involve times were checked for Y2K problems. Tasks
which read the DATE-OBS keyword were updated to support the new
FITS definition for this keyword.
CCDTIME:
The database keywords can now be indexed by reference to the telescope,
filter, and/or telescope.
A new filter keyword, "extinction", was added to specify the
extinction.
ONEDSPEC:
Some improvements were made to better recognize various CTYPE values.
REIDENTIFY:
When the reference and image names are the same the task will now
skip the reidentify,
IDENTIFY/REIDENTIFY:
When a coordinate list is read it is sorted and identical
entries are eliminated. Thus, line lists no longer need to
be sorted.
APEXTRACT:
APALL:
Added a keyword SUBAP when using echelle output with subapertures.
CCDRED:
CCDPROC:
* Added an optional output image parameter.
APPHOT:
The APPHOT default input and output file and image naming routines
were modified to deal rationally with FITS image extension and GEIS file
root names.
POLYPHOT:
The polygon drawing code in the POLYPHOT task was modified to flush the
graphics buffer after each polygon segment is drawn instead of after
the polygon is complete.
DAOPHOT:
The DAOPHOT default input and output file and image naming routines
were modified to deal rationally with FITS image extension and GEIS
file root names.
The DAOPHOT ADDSTAR, ALLSTAR, GROUP, NSTAR, PEAK, PSTSELECT,
PSF, and SUBSTAR tasks were modified to read and write default images
and files from and to directories other than the current directory
just as the DAOFIND and PHOT tasks and the all the APPHOT package
tasks do.
The restriction on the number of stars imposed by the "maxnstars"
parameter in the PSTSELECT, PSF, GROUP, ALLSTAR, and SUBSTAR tasks was
removed. Maxnstars is now used only for setting the initial buffer
size.
UTILITIES:
SURFIT:
* The UTILITIES package task SURFIT was modified to support the surface
fitting package half cross-terms option.
pkg/math/iminterp/
The image interpolation package was modified to support 1D and 2D
sinc interpolation and drizzle resampling.
pkg/math/slalib/
The Starlink contributed library slalib was upgraded from version
1.6.3 to version 2.3.0. There are seventeen new routines in the
upgraded library. Most of these either deal with converting between
the FK5 to ICRS (Hipparcos) equatorial coordinate systems, or with
computing orbital elements for solar system objects.
sys/vops/asok.gx
The algorithm used in this routine was found to be extremely slow in
cases where many or all of the elements of the input area were equal.
It was replaced by a different algorithm from Wirth which avoids
this problem.
sys/gio/imdkern/idk.x
sys/gio/imdkern/imdpcell.x
dev/graphcap
Changed bits per word of the IDK bitmask from 8 to 32 to increase
the encoding efficiency of the bitmask to the maximum and thus reduce
the size of the internal IDK frame buffer bitmask used for overlay
graphics. Increased the maximum frame buffer size from 2048 square
to 8192 square. Changed the max resolution for imdkern to 8192x8192
in the graphcap entry.
unix/os/zfioks.c
Added a new environment variable "KSRSH". This can be used to define
the RSH command to be used to make network connections. The default
value is "rsh" (or the equivalent "remsh" on one old system). For
example, one can set KSRSH=ssh to cause IRAF networking to use ssh
instead of rsh (ssh is a more secure version of rsh that uses strong
authentication).
lib/time.h
sys/etc/cnvtime.x
sys/etc/cnvdate.x
Minor changes were made to print the year using 4 digits instead of
2, to make this code Y2K compliant.
unix/hlib/r1mach.f
unix/hlib/d1mach.f
unix/hlib/i1mach.f
Installed updated versions of these files from the PORT package
on netlib. The values for the minimum and maximum IEEE floating
point normals were invalid (thanks to Steve Walton for pointing
this out). NOTE: even on a machine with IEEE floating point, the
file d1mach.f has to be modified to reflect the byte order of
the platform IRAF is being ported to.
bin.sparc/S.e
bin.ssun/S.e
The "S.e" link was restored. This link points to the Sun/IRAF shared
image for the development system. It is not required for execution,
but is required at compile/link time for edsym.e to be able to
update the symbols for the IRAF shared image. This is needed to
debug functions in the shared image.
unix/boot/spp/rpp/mkpkg.sh
unix/boot/spp/rpp/ratlibc/mkpkg.sh
The ratlibc code was being compiled into a library "libc.a". This
caused problems linking rpp.e on Solaris 7, so the name of this
internal, temporary library was changed to libratc.a.
lib/time.h
sys/etc/dtmcnv.x
sys/etc/gmtcnv.x
sys/etc/mkpkg
unix/hlib/libc/knames.h
unix/os/gmttolst.c
unix/os/mkpkg
unix/os/zgmtco.c
1) A new kernel routine "zgmtco" was added to OS. This gives the
correction, in seconds, from LST to GMT. (LST here means local
standard time, or clock time). Since IRAF already returns the clock
time in LST seconds, this allows either LST or GMT to be determined.
Note LST corrects for daylight savings time, the GMT correction takes
this into account as well. In practice programs can just ignore
daylight savings time and let the kernel worry about it.
2) New routines gmttolst() and lsttogmt() were added to ETC. These
convert times (in seconds) to and from LST and GMT. A value of zero
can be input to get the correction value.
3) A set of four new routines dtm_encode, dtm_decode, dtm_encode_hms,
and dtm_decode_hms were added to ETC. A related flag value was
added to . "dtm" standard for date/time. These routines
convert time expressed in year, month, date, and time of day to and
from a string value. A flags value can be used to select the type
of time string to be encoded or decoded. Currently DATE-OBS in
FITS-Y2K and the old FITS formats are supported.
unix/os/zglobl.c
Increased the size of SZ_PROCNAME from 32 to 256 chars. On some
systems this is a full pathname, and could overflow the buffer.
b/gio.h
This and the next several changes were part of an effort to change
GIO to allow long "device names" for GUIs (which may include a GUI
file name) to be passed through the graphics stream to the stdgraph
kernel.
Increased SZ_UIFNAME from 99 to 199 chars. This also increases the
size of the dynamically allocated GIO descriptor.
sys/gio/cursor/gtr.h
Increased SZ_TRDEVNAME from 29 to 229. Increased SZ_KERNFNAME from
59 to 259. This also increases the size of the dynamically allocated
GTR descriptor.
sys/gio/stdgraph/stdgraph.h
Increased SZ_GDEVICE from 31 to 256. Increased SZ_UIFNAME from 99
to 199. Increased SZ_SBUF from 1024 to 2048. These changes did
not change the size of the dynamically allocated stdgraph descriptor,
as string space is dynamically allocated in the string buffer.
sys/gio/gmsg.x
This code was changed to use STDERR rather than STDOUT to send
messages to GUIs. Formerly, if the stdout of a GUI task was
redirected this could cause GUI messages (gmsg) to never reach
the GUI (this is of course still possible using STDERR, but it
is less likely that someone will need to redirect the STDERR of an
interactive GUI). The text stream are used for messaging because
messages can be any size; messages of hundreds of KB are possible,
e.g. when sending large GUI files, or documentation text. (Something
like the message bus is needed to fully address this problem).
dev/graphcap
Added a new xgterm entry "xgterm-nogui", which is identical to the
xgterm entry but which has GUI messaging (gmsg) disabled. This
logical device will completely disable GUIs but still permit vector
graphics. It also disables the builtin default ED (xgterm.gui), but
the default xgterm GUI built into xgterm itself should kick in in
this case when graphics mode is entered. We don't plan to use
xgterm-nogui, but it could be useful as a fallback in case of
problems, or for testing.
lib/imio.h
Increased the default file buffer size used by IMIO a factor of 4
from 65536 to 262144. The units are XCHAR, so in byte units the new
default image file buffer size increased from about 128 KB to about
half a megabyte (about the size of dev$pix). Note that applications
can override the default buffer size with an imset option, and any
such existing applications will be unaffected by this change
(imcombine for example probably controls the image buffer sizes in
order to have many images open at once). Ordinary imaging tasks
should function with fewer i/o operations however.
unix/hlib/config.h
1. Increased the size of the file pushback buffer from 512 to 1024.
Not a big deal as it gets incremented anyway if overflow occurs.
2. Changed LEN_RANDBUF from 1 to 8. LEN_SEQBUF remains at 8 as
before. Random mode FIO buffers are LEN_RANDBUF*blksize, hence
these have increased in size from 512 bytes to 4KB (random mode
i/o is rarely used). Sequential mode FIO buffers are LEN_SEQBUF
*optbufsize, where optbufsize is returned by the file driver.
Sequential mode (fseti (fd, F_ADVISE, F_SEQUENTIAL) is also little
used however. Most file operations use the unscaled "optbufsize"
returned by the kernel driver (see below).
Note config.h contains a few size definitions which are not actually
used any longer in the code, since these values now come from the
device drivers are are tuned for each device and host system. Hence
these older values were unchanged.
unix/hlib/libc/kernel.h
Increased the optbufsize for a binary file from 4096 to 32768. The
static file optbufsize was similarly increased, but static (mapped)
files are little used in the current system. All the other optbuf
sizes remained the same. The network devices, process communications
buffers, and so on all remain at 4KB since this value is a good
match for the buffer sizes used in the Unix kernel.
Hence, ordinary binary file i/o operations now use 32 KB buffers
instead of 4 KB buffers. The special cases of random mode binary
file i/o and sequentially optimized binary file i/o have default
buffer sizes of 4 KB and 256 KB respectively. These should be
reasonable, safe, and efficient buffer sizes for most applications.
unix/os/zfiond.c
Modified the server-side code to set the socket option SO_REUSEADDR
when opening a socket and binding it to an IP address and port.
This avoids the annoying delay which is otherwise seen when a
server quits, but the socket it was using is not released for
some time until the kernel times it out and releases it. This
only affects server-side connections and currently I don't know
of any IRAF servers that use ZFIOND, but probably all server-side
socket code should use this feature. (setsockopt was added quite
some time after most of the socket code in IRAF was originally
written).
sys/gio/imdkern/idk.x
sys/gio/imdkern/imdpcell.x
dev/graphcap
Changed BPW from 8 to 32 (nbits used per integer word of the IDK
image bitmask); this increases the encoding efficiency of the
bitmask to the maximum to reduce the size of the internal IDK frame
buffer bitmask used for overlay graphics. Increased the maximum
frame buffer size from 2048 square to 8192 square. Changed the
max resolution for imdkern to 8192x8192 in the graphcap entry.
unix/os/zfioks.c
Added a new environment variable "KSRSH". This can be used to define
the RSH command to be used to make network connections. The default
value is "rsh" (or the equivalent "remsh" on one old system). For
example, one can set KSRSH=ssh to cause IRAF networking to use ssh
instead of rsh (ssh is a more secure version of rsh that uses strong
authentication).
lib/gio.h
This and the next several changes were part of an effort to change
GIO to allow long "device names" for GUIs (which may include a GUI
file name) to be passed through the graphics stream to the stdgraph
kernel.
Increased SZ_UIFNAME from 99 to 199 chars. This also increases the
size of the dynamically allocated GIO descriptor.
sys/gio/cursor/gtr.h
Increased SZ_TRDEVNAME from 29 to 229. Increased SZ_KERNFNAME from
59 to 259. This also increases the size of the dynamically allocated
GTR descriptor.
sys/gio/stdgraph/stdgraph.h
Increased SZ_GDEVICE from 31 to 256. Increased SZ_UIFNAME from 99
to 199. Increased SZ_SBUF from 1024 to 2048. These changes did
not change the size of the dynamically allocated stdgraph descriptor,
as string space is dynamically allocated in the string buffer.
unix/hlib/libc/kernel.h
Increased the optbufsize for a binary file from 4096 to 32768. The
static file optbufsize was similarly increased, but static (mapped)
files are little used in the current system. All the other optbuf
sizes remained the same. The network devices, process communications
buffers, and so on all remain at 4KB since this value is a good
match for the buffer sizes used in the Unix kernel.
Hence, ordinary binary file i/o operations now use 32 KB buffers
instead of 4 KB buffers. The special cases of random mode binary
file i/o and sequentially optimized binary file i/o have default
buffer sizes of 4 KB and 256 KB respectively. These should be
reasonable, safe, and efficient buffer sizes for most applications.
lib/time.h
sys/etc/dtmcnv.x
sys/etc/gmtcnv.x
sys/etc/mkpkg
unix/hlib/libc/knames.h
unix/os/gmttolst.c
unix/os/mkpkg
unix/os/zgmtco.c
1) A new kernel routine "zgmtco" was added to OS. This gives the
correction, in seconds, from LST to GMT. (LST here means local
standard time, or clock time). Since IRAF already returns the clock
time in LST seconds, this allows either LST or GMT to be determined.
Note LST corrects for daylight savings time, the GMT correction takes
this into account as well. In practice programs can just ignore
daylight savings time and let the kernel worry about it.
2) New routines gmttolst() and lsttogmt() were added to ETC. These
convert times (in seconds) to and from LST and GMT. A value of zero
can be input to get the correction value.
3) A set of four new routines dtm_encode, dtm_decode, dtm_encode_hms,
and dtm_decode_hms were added to ETC. A related flag value was
added to . "dtm" standard for date/time. These routines
convert time expressed in year, month, date, and time of day to and
from a string value. A flags value can be used to select the type
of time string to be encoded or decoded. Currently DATE-OBS in
FITS-Y2K and the old FITS formats are supported.