IRAF 2.17.1 Release notes

Authors:

IRAF Community

Date:

July 15, 2023

The current IRAF version 2.17.1 is available from github at

https://github.com/iraf-community/iraf/releases/tag/v2.17.1

Changes to the NOAO 2.16.1 sources include:

  • Community maintainance

    IRAF is no longer maintained by NOAO, but by the community of volunteers. Contributions of bug fixes, documentation or improvements are welcome.

  • All known non-free code removed

    Although IRAF 2.16.1 was claimed to be “free software”, it contained source code that is not freely distributable; namely code copied from the book “Numerical Recipes in Fortran”. This code is replaced with free equivalents. The IRAF community edition is Open Source, and as such included in Debian.

  • Installation procedure reworked

    The installation scripts are replaced with makefiles, and the build and installation procedures now use the standard targets, standard paths, and customization environment variables. The standard installation place is /usr/local/lib/iraf. On a build error the build now stops now immediately, making it easier to find the cause.

  • IRAF ported to other architectures

    IRAF is now ported to a number of little endian architectures (ARM, PowerPC, MIPS, x32, RISC-V64) and operating systems (GNU Hurd and FreeBSD). Specifically, the Mac M1 processor is supported now.

    The code was adjusted to be compliant with newer (C99) C standards, and to be compileable with actual compilers.

  • Major bug fixes

    Many bugs of the 2.16.1 release are fixed. Some of he major ones are:

    • Linux systems crashed with “Out of memory” (2.12 release notes)

    • noao.digiphot.photcal.fitparams failed with a segmentation fault on 64-bit systems (iraf.net#1467834)

    • The system wide IRAF installation changed the permissions of /tmp/, creating a major security hole in the system (iraf-v216#23)

    • On Linux systems, self-compiled tasks gave wrong results (iraf.net#1467841)

    • On modern systems, background execution did not work (iraf.net#1467431)

    • The original code produced errornous executables when build on Linux versions later than 2012. It also did not build from scratch, but required an already compiled IRAF version.

  • Simple CI test framework added

    The tests are defined and documented in MarkDown files. Tests are run with Github Actions on Linux and MacOS X platforms.

  • VO package and vocl removed

    The VO package, and the vocl shell heavily depend on a number of Java jars, where the creation from sources is undocumented. The package also uses outdated VO standards. A discussion with Mike Fitzpatrick resulted in his plan to move the VO functionality into an external package. Therefore, no attempt was put into getting these problems fixed, and the VO stuff was cut out.

Detailed list of changes

This list shows all pull requests that were merged since 2.16.1.

Since 2.17

  • Add a machine readable citation file (#306)

  • Update f2c to latest version and document local changes (#295)

  • Ensure NULL is a pointer in SPP (#292)

  • Replace vosproto.h with prototypes from xnames.h (#284)

  • Use typedef instead of #define where applicable (#283)

  • Protoize the remaining C code (#282)

  • Restructure PFI to be used as “generic” function pointer (#281)

  • Fix a few small bugs in sys$ (#280)

  • Change a few appearances of PKCHAR (#279)

  • Replace SIGFUNC by sighandler_t (#278)

  • Create useful prototypes for kernel functions (host$os) (#277)

  • Fix several errors that appear when compiled with -std=c99 (#276)

  • Rename iraf subincludes (#275)

  • Don’t add empty arguments to xc argument lists (#271)

  • Fix keyword search in envinit (#270)

  • Re-work installation process, improve user scripts (cl, mkiraf) (#268, #300, #312, #314)

  • Stop mkpkg execution if an error was discovered (#267, #287)

  • Convert make scripts (mkpkg.sh) to Makefiles (#266, #293, #301)

  • Update documentation for host commands (xc, mkpkg etc.) (#265)

  • Add old release notes as ReStructuredText (#263, #264)

  • Directly use xc.e, xyacc.e etc. from mkpkg and CL (#262)

  • Update cfitsio to version 4.2.0 (#249)

  • Fix processing onf INDEF in the “generic” preprocessor (#238)

  • Ensure the use of the extended image opening code (#236)

  • Fix a bug in the parsing of directory arguments of mkfloat (#231)

  • Fix off-by-one allocation error in sgi2uhplj.c (#207)

  • Update to new C environment (#225, #226, #302)

  • Code cleanup in host$ and sys$ (#223, #274, #290, #291, #294)

Since 2.16.1+2021.06.14

  • Consistently format doc/help examples (#195)

  • Fix some HTML help output glitches (#194)

  • Remove duplicate argument in call (#189)

  • Revert corruption of unix/os/net/rexec.c file (#180)

  • Force using POSIX shell in extpkg.cl script (#179)

  • Support freeBSD variants (#174)

  • Separate development (softools) packages (#172)

  • Remove obsolete tasks and links to iraf.noao.edu (#170)

Since 2.16.1+2018.11.01

  • Cleanup for unneeded and obsolete files (#166)

  • fix slalib bug in sla_EQEQX (#160)

  • Ignore existing iraf env var in ./install (#157)

  • Cleanup ecl and cl (#156)

  • Add macOS arm64 support (#131)

  • Replace hard-coded host$bin paths by IRAFPATH (#128)

  • Remove include/drvrsmem.h (#126)

  • Fix cpu_time calculation in unix/os/zgtime.c (#118, #136, #173)

  • Move zsvjmp assembler files to unix/os and merge them (#117)

  • Use PLT when calling sigsetjmp on i386 (#116)

  • Adjust external licenses (#115)

  • Definitely use flex to generate unix/generix/lexyy.c (#112)

  • Avoid multiple definition of errflag (#111)

  • Enable the use of Public Domain Ratfor to process .r files (#103, #171)

  • Remove some C compiler warnings (#97)

  • Fix non-working fft841 code by replacing it (#95)

  • Add LAPACK license (#88)

  • Rename mkfloat.sh to mkfloat (#87)

  • Add support for the DEC Alpha processor (#79)

  • Fix and improve the shell scripts (#75, #76, #77, #85, #86, #113)

Since 2.16.1+2018.06.15

  • Add riscv64 support (#72)

  • Fix buffer length in urlget.x (#70)

  • Mention Chisato Yamauchi as copyright owner of the x86_64 zsvjmp.s code (#67)

  • Adjust calling of nttools subdir in pkg/utilities/mkpkg (#65)

  • Update and modernize top-level information files (#64, #73)

  • Check for the existence of the arch variable before using it (#63)

  • Improve prototyping in bootlib (#62)

  • Appended ZTTYSZ() function to get width and height of terminal (#58)

  • Replace readline library by libedit on macos (#57)

  • Clean and fix shell scripts (#50, #51, #53, #54, #55, #75, #76, #77)

  • Fix variable declaration in noao/obsutil/src/findgain.cl (#47)

  • Remove unused empty files (#45)

  • Add manpages (#44)

  • Update cfitsio to 3.450 (#43)

  • votable: Fix data type of loop variable (#41)

Since 2.16.1+2018.03.10

  • Implement the ‘apropos’ command (#37)

  • Don’t check for updates (#36)

  • Update cfitsio to 3.440 (#34)

  • Fix background execution in cl and ecl (#32)

  • Port IRAF to several architectures (#31)

Since 2.16.1+2018.02.04

(Pull Requests from iraf/iraf-v216)

  • Update cfitsio to 3.430 (#135)

  • Fix off-by-one problem in xppcode.c (#133)

  • Remove files that were generated by generic.e or xyacc.e (#132)

Since 2.16.1+2017.12.28

(Pull Requests from iraf/iraf-v216)

  • Make photcal 64-bit capable (#130)

  • f2c: Fix allocated size of Dimblock (#127)

Since 2.16.1

(Pull Requests from iraf/iraf-v216)

  • Check filepointer for NULL in envinit before trying to close. (#126)

  • Add the required credits for the IRAF64 project. (#125)

  • Use strncpy and snprintf to fill file header in wtar (#124)

  • Specify explicit format for fprintf() (#123)

  • Limit number of finfo structs returned by KI_ZFINFO to MAX_ARGS (#122)

  • Fix isalnum() and friends for non-ascii values (#121)

  • Use curl in pkgget (#115)

  • Fix comparison for some optional command line arguments in xc (#111)

  • Add a trailing \0 to the end of variable format strings in pkg/tbtables/fitsio/ (#110)

  • Fix OS dirnames in README (#108)

  • Adjust f2c’s internal integer size for ILP64 (#107)

  • Replace d1mach.f and r1mach.f by C sources (#106)

  • Handle negative pointers in sys/nmemio (#105)

  • Remove all executables and binaries in make src (#104)

  • [linux64] Correct underlines in mem symbol in zsvjmp.s (#102)

  • Correct string length of baseurl initialization in chkupdate.x (#101)

  • Fix segfault when opening a STRING_FILE (#100)

  • Fix statement order in vfn_expand_ldir (#99)

  • Fix linenumber generation with xpp -x (rpp and spp) (#98)

  • Fix template expansion in generic.c (#94)

  • Remove VO related packages and libraries (#93,

  • Initialize oscwd in zglobl.c (#91)

  • Check for identical addresses before strcpy() in mkpkg/tok.c (#89)

  • Fix type of arguments for several procedure calls (#88)

  • Bugfix for unix/os/gmttolst.c and unix/zgmtco.c (#87)

  • Fix location of yaccpar.x (#84)

  • [macosx] Fix syntax error in readline/mkpkg on macosx (#83)

  • Remove absolute paths from header (#82)

  • Reverse the condition when iraf should be set (#81)

  • [macosx] Fix MacOSX min version on zsvjmp_i386.s (#80)

  • Fix lex source files in xpp and generic (#79)

  • [macintel] Replace setpgrp(...) with POSIX setpgid() (#78)

  • Avoid identical src/target in strcpy() when creating library names in xc (#77)

  • [linux] Consequently add -m32 flags if compiling for linux(32) (#76)

  • Convert to ANSI C to fix return types of functions in memlog.c (#75)

  • Limit entries in bitmask to 64 bit. (#74)

  • Accept zero date in archives (#71)

  • Fix computation of offset in memory allocation at 32 bit (#67)

  • Fix ADDR_TO_LOC for i386 (32 bit) (#62)

  • Fix declaration of cdsmem in rpp (#60)

  • Force iraf to align on 128-bit boundaries (#57)

  • Remove curl/types.h includes (#51)

  • Fixed spelling error, “the” not “teh”. (#47)

  • [linux64] Call the PLT for __sigsetjmp instead of calling directly (#45)

  • Removed an extra linux64 (#44)

  • Build vendor libs before starting the NOVOS build (#40)

  • Fixed recursive error in definition of LFLAGS (#39)

  • Convert mklibs to /bin/sh (#38)

  • Replace or remove non-free code (Numerical Recipes etc.) (#37)

  • Add continious integration testing with travis-CI (#36)

  • Replace absolute symlinks in sys/osb by relative ones (#33)

  • Don’t remove sticky bit from /tmp on install (#24)

  • Fix setting of non-default IRAF root (#22)

  • Clean up sources from unnecessary code (#2, #14, #15, #16, #17, #18, #20, #25, #68, #69, #70, #113, #116, #117)