HDF version 4.2.5 released on Wed Feb 24 13:00:16 CST 2010
===================================================

INTRODUCTION

This document describes the differences between HDF 4.2.4 and HDF 4.2.5
It is written for people who are familiar with previous releases of HDF 
and wish to migrate to HDF 4.2.5

The HDF 4.2.5 documentation can be found on the The HDF Group's FTP server:

     ftp://ftp.hdfgroup.org/HDF/Documentation/

First-time HDF users are encouraged to read the HDF FAQ, which can be
reached from the HDF product home page:
  
     http://hdfgroup.org/products/hdf4/

If you have any questions or comments, please see the HDF Support page:

     http://hdfgroup.org/services/support.html

CONTENTS

- New features and changes
  -- Source distribution
  -- Configuration
  -- Library
  -- Utilities
- Support for new platforms and compilers
- Bugs fixed since HDF4.2.4
  -- Utilities
  -- Library
  -- Configuration
- Documentation
- Platforms tested
- Known problems
- Appendix: List of the removed files


New features and changes
========================
    Source distribution
    ===================
    - For the complete list of the removed obsolete files see Appendix.
    - Removed obsolete mfhdf/port and mfhdf/c++ directories and related 
      code
        (EIP - 2010/1/18)
    - Removed obsolete hdf/fmpool directory and related code
    - Removed obsolete constants PCIO, WINIO, PAGEBIFIO, and WINNTIO from
      hdfi.h and hfile.h 
        (EIP - 2009/12/31)
    - INSTALL* files were moved to the release_notes directory
        (EIP - 2009/12/29)
    - SD tests were moved from mfhdf/libsrc to mfhdf/test.
	  (BMR - 2009/09/10)

    Configuration
    ============= 
    - Added a configure check that will fail when jpeg version 7 is
      used, as this is not yet supported in HDF4. (MAM - 2010/01/28)
    - Configure suite now built with the following versions of the autotools:
        Automake 1.11.1, Autoconf 2.65, and Libtool 2.2.6b  
        (MAM - 2009/12/14)

    Library
    ========= 
    - SDgetchunkinfo now contains compression type and compression
      information.  If failure occurs while getting compression information,
      the associate compression parameters will be set to -1 to indicate
      that no compression information is retrieved, instead of SDgetchunkinfo
      simply fails.  This is to support backward compatibily.
      (BMR - 2010/02/04)
    - Vgroup name and class name can now be more than the previous limit
      of 64 characters.  Two public functions are provided for applications
      to be able to allocate sufficient space for these items.
        int32 Vgetnamelen (int32 vkey, uint16 *name_len);
        int32 Vgetclassnamelen (int32 vkey, uint16 *classname_len);
      Please refer to the Reference Manual and User's Guide for details.
      (BMR - 2010/01/27)
    - SDreset_maxopenfiles allows users to reset the number of the files that 
      can be open at the same time to the system limit minus 3. On AIX 6.1
      system limit is 2GB-1 causing HDF4 to choke. Source code was modified 
      to put a cap on the system limit to not exceed 
      H4_MAX_AVAIL_OPENFILES (currently 20000).  (EIP - 2010/02/01) 
    - "make installcheck" builds and tests examples using h4cc and h4fc
      scripts (MAM, BMR and MSB - 2009/12)
    - HDF Fortran examples were added to hdf/fortran/examples. 
      (MAM - 2009/12/14)
    - SD examples were added to mfhdf/examples.  (BMR - 2009/08/28)
    - HDF C examples were added to hdf/examples.  (BMR - 2009/11/07)

    Test
    ====
    - Added tests for GRfindattr, GRattrinfo, and GRgetattr (BMR - 2009/11/15)
    - Moved SD tests out of mfhdf/libsrc into the new directory mfhdf/test
      (BMR - 2009/09/10)

    Utilities
    ========= 
    - Added flag -k to hdp dumpsds to keep the order of the outputted
      SDSs the same as the order they were specified on the command
      line.  The default (without -k) is SDSs are printed in the order
      in which they were added to the file (ie., indices.) (BMR - 2010/02/03)
    - Added -V flag to hdiff, hrepack, hdfimport, ncdump and ncgen; 
      when specified, tool prints library version string and exits.
          (EIP - 2010/01/28) 
    - Hrepack: set default value for JPEG's quality factor to 75 to
      prevent image distortion when the factor is not provided by user
      (BMR - 2010/01/14)
 
    Daily Test and Release
    ======================
    Added h4vers and release scripts and Snapshot Release capability.

Support for new platforms and compilers
=======================================
   Added support for 64-bit Mac Intel with gcc, gfortran and Intel C
   and Fortran compilers.
   Added support for AIX 6.1 using IBM XL C and Fortran compilers.
   (EIP - 2010/1/29)

Bugs fixed since HDF4.2.4
=========================
    Utilities
    ========= 
        - None 

    Library
    ========= 
    - The problem where incorrect result occurred when attempting
      to retrieve the dimension scale's number type from a netCDF file
      was fixed (bugzilla #1644.) (BMR - 2009/09/25)
    - The problem where pieces of an image get written multiple times
      at different locations in the 2-D array had been fixed.  The
      cause was the pointer to user's buffer was not advanced properly.
      This was part of bugzilla 1547.  (BMR - 2009/06/10)
    - The problem which SDgetdimstrs failed if there are no attributes
      attached to the dimension had been fixed.  SDgetdimstrs now returns
      the attribute strings containing '\0' for the first character, as
      specified in the documentation. (BMR - 2009/08/28)


    Configuration
    =============
    - The mfhdf/ncgen/Makefile.in now has $(EXEEXT) appended to the ncgen
      program whenever it is referenced in a build rule dependency. This 
      fixes some compile problems on Cygwin, where the .exe is necessary.
      (MAM - 2009/12/17). 
    - Configure will now fail if the yacc or flex utilities are not available
      (as opposed to failing sometime during make when they are used).
      (MAM - 2009/12/17).
    - Configure will now properly check for the rpc library when on
      Cygwin, and fail gracefully if it is not found. (MAM - 2009/12/17)
    - Configure will no longer try to use a Fortran compiler to set up
      aspects of the build environment when Fortran has been disabled, as
      configure now deliberately sets the F77 environment variable to 'no'
      when Fortran is disabled. This should no longer cause build problems 
      on Cygwin when no Fortran compiler is available. (MAM - 2009/12/14)
    - './configure --help' will now correctly indicate that shared libraries
      are disabled by default. (MAM - 2009/12/14)
    
        

Documentation
==============
The updated HDF Reference Manual is now available in HTML format.

Platforms tested
================

HDF 4.2.5 has been tested in the following platforms:

    FreeBSD 6.3-STABLE i386       gcc 3.4.6 [FreeBSD] 20060305
    (duty)                        f77 (gcc) 3.4.6
                                  gcc (GCC) 4.4.4 20100126 (prerelease)
                                  GNU Fortran (GCC) 4.4.4 20100126
                                  (prerelease) 

    FreeBSD 6.3-STABLE amd64      gcc 3.4.6 [FreeBSD] 20060305
    (liberty)                     f77 (gcc) 3.4.6
                                  gcc (GCC) 4.4.4 20100126 (prerelease)
                                  GNU Fortran (GCC) 4.4.4 20100126
                                  (prerelease)


    Linux jam 2.6.18-164.el5 #1   gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
         SMP i686 i386            G95 (GCC 4.0.3 (g95 0.92!) Jun 24 2009)
    (jam)                         g77 (GCC) 3.4.6 20060404
                                  pgcc and pgf90 8.0-5 32-bit target 
                                  on x86 Linux -tp penryn
                                  Intel(R) C Compiler, Version 11.0
                                  Intel(R) Fortran Compiler, Version 11.0


    Linux 2.6.18-164.11.1.el5 #1  gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-46)
        SMP x86_64 GNU/Linux      G95 (GCC 4.0.3 (g95 0.92!) Jun 24 2009)
    (amani)                       icc (ICC) 11.1 20090827
                                  ifort (IFORT) 11.1 20090827
                                  pgcc and pgf90 9.0-4 64-bit target 
                                  on x86-64 Linux -tp k8-64e
                                  GNU Fortran (GCC) 4.1.2 20080704 
                                  (Red Hat 4.1.2-46)

    SunOS 5.10 32- and 64-bit     Sun C 5.9 SunOS_sparc Patch 124867-12 
    (linew)                       Sun Fortran 95 8.3 SunOS_sparc 
                                  Patch 127000-12 

    Linux 2.6.16.54-0.2.5 #1      Intel(R) C Compiler Version 10.1.017
        Altix SMP ia64            Intel(R) Fortran Itanium(R) Version 10.1.017
    (cobalt)                      SGI MPI 1.16

    Xeon Linux 2.6.18-92.1.10.el5_lustre.1.6.6smp-perfctr
         #2 SMP x86_64            Intel(R) C Compiler Version 10.0.026
    (abe)                         Intel(R) Fortran Compiler Version 10.0.026

    IA-64 Linux 2.4.21.SuSE_292.til1
        ia64
    (NCSA tg-login)               Intel(R) C Compiler Version 8.1.037
                                  Intel(R) Fortran Compiler Version 8.1.033

    AIX 5.3 (32/64 bit)           IBM XL C/C++ for AIX, V9.0
    (LLNL Up)                     IBM XL Fortran for AIX, V11.1

    AIX 6.1 (32/64 bit)           IBM XL C/C++ for AIX, V10.1
    (NCSA bp-login)               IBM XL Fortran for AIX, V12.1

    Windows XP                    Visual Studio 2005 (with Intel Fortran 9.1/10.1)
                                  Visual Studio 2008 (with Intel Fortran 10.1)
                                  cygwin (gcc 4.3.4)

    Windows XP(64 bit)            Visual Studio 2005 (with Intel Fortran 9.1/10.1)
                                  Visual Studio 2008 (with Intel Fortran 10.1)
                                  
    Windows Vista                 Visual Studio 2008 (with Intel Fortran 10.1)
                                  
    Windows Vista(64 bit)         Visual Studio 2008 (with Intel Fortran 10.1)
                                  
    MAC OS X Intel 10.6.2         Darwin 10.2.0
                                  Intel C icc (ICC) 11.1 20091130
                                  Intel Fortran ifort (IFORT) 11.1 20091130 
                                  i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1
                                  GNU Fortran (GCC) 4.5.0 20090910
                              

    Linux 2.6.31.12-174.2.3.fc12.x86_64 #1 SMP 
        x86_64 GNU/Linux          gcc (GCC) 4.4.2
     (Fedora 12)                  gfortran GNU Fortran (GCC) 4.4.2 20091222 
                                                       (Red Hat 4.4.2-20)
    Linux 2.6.31-17-generic #54-Ubuntu SMP 
        x86_64 GNU/Linux          gcc (GCC) 4.4.1
     (Ubuntu 9.10)                gfortran GNU Fortran (GCC) 4.4.1 
                                                       
    Linux 2.6.31.8-0.1-desktop #1 SMP 
        x86_64 GNU/Linux          gcc (GCC) 4.4.1
     (OpenSuse 11.2)              gfortran GNU Fortran (GCC) 4.4.1 


Known problems
==============

o  Wnen buidling in AIX systems, if CC is xlc with -qlanglvl=ansi, configure
   fails when checking for the jpeglib.h header due to the duplicated
   macro definition of HAVE_STDLIB_H.  This is because some newer builds
   of jpeg library has HAVE_STDLIB_H defined in its jconfig.h header file.
   Without the -qlanglvl=ansi, some older xlc (e.g., V7.0) still fails but
   newer xlc (e.g., V9.0) passes. (AKC - 2010/02/17)

o  When building on Linux/UNIX platforms, the szip shared library files must
   be in the system library path. This can be done by adding a link to
   the libsz.* files into the /usr/lib folder or by adding the library
   location to the LD_LIBRARY_PATH environment variable.
      Ex. export LD_LIBRARY_PATH=path_to_szip_lib:$LD_LIBRARY_PATH
   Optionally, one can use the static szip library files by adding '-static'
   to the CFLAGS environment variable.
   
o  Existing data written by an HDF4 Library prior to HDF 4.2r2:
   When a one-dimensional SDS and a dimension scale were created with
   the same name, subsequent accesses to the dimension scale or to the
   SDS might corrupt the data.

   HDF4 Library Releases 4.2r2 and later do not allow this conflict to
   occur.  On the other hand, recent libraries are also unable to detect
   such conflicts that already exist in a file.  It is therefore STRONGLY
   recommended to check for such name duplication before working with data 
   created with a pre-4.2r2 library. 

   The functions SDgetnumvars_byname and SDnametoindices are provided
   to help detect such name conflicts and select the correct object to
   access, respectively; see the HDF Reference Manual entries for 
   further details.

o  This release does not support VMS systems.

o  N-Bit compression is not supported with Fortran APIs.

o  Using both fill-value and compression on SD datasets does not work.

o  When using PGI compilers, make sure that the JPEG library is also compiled 
   with a PGI C compiler; linking with a JPEG library built with gcc causes 
   JPEG library tests to fail.  To bypass the problem:

       x Set LIBS flag to $PGI_JPEG_INSTALL_DIR/lib/libjpeg.a
         where $PGI_JPEG_INSTALL_DIR points to the installation directory
         for the PGI-compiled JPEG library:

         setenv LIBS $PGI_JPEG_INSTALL_DIR/lib/libjpeg.a

       x Use the --with-jpeg=$PGI_JPEG_INSTALL_DIR configure flag to 
         configure with the PGI-compiled JPEG library:

         ./configure --with-jpeg=$PGI_JPEG_INSTALL_DIR --with-zlib....

o  In order for the API SDgetdatasize to get the correct compressed size
   of the data, the dataset needs to be closed (SDendaccess) or read
   (SDreaddata), after being written and before SDgetdatasize is called.

  
Appendix: List of the removed files 
===================================

	mfhdf/CHANGES
	mfhdf/CUSTOMIZE
	mfhdf/INSTALL
	mfhdf/MANIFEST
	mfhdf/ORIGIN
	mfhdf/README
	mfhdf/README.HDF
	mfhdf/README.HDF.33
	mfhdf/VERSION
	mfhdf/macros.mk
	mfhdf/mfhdf.mak
	mfhdf/msoft.mk 
 

        mfhdf/c++/README
        mfhdf/c++/example.c
        mfhdf/c++/example.cc
        mfhdf/c++/example.cdl
        mfhdf/c++/expected
        mfhdf/c++/nc.info
        mfhdf/c++/nc.txn
        mfhdf/c++/nctst.cc
        mfhdf/c++/ncvalues.cc
        mfhdf/c++/ncvalues.hh
        mfhdf/c++/netcdf.cc
        mfhdf/c++/netcdf.hh

	mfhdf/fortran/fortc
	mfhdf/fortran/fortc1.sed
	mfhdf/fortran/fortc2.sed
	mfhdf/fortran/ftest.lnk
	mfhdf/fortran/msoft/

	mfhdf/fortran/Linux.m4
	mfhdf/fortran/README
	mfhdf/fortran/aix.m4
	mfhdf/fortran/common.m4
	mfhdf/fortran/convex.m4
	mfhdf/fortran/craympp.m4
	mfhdf/fortran/descrip.mms
	mfhdf/fortran/freebsd.m4
	mfhdf/fortran/fujivp.m4
	mfhdf/fortran/hpux.m4
	mfhdf/fortran/irix.m4
	mfhdf/fortran/msoft.m4
	mfhdf/fortran/msoft.mk
	mfhdf/fortran/osf.m4
	mfhdf/fortran/solaris.m4
	mfhdf/fortran/sunos.m4
	mfhdf/fortran/ultrix.m4
	mfhdf/fortran/unicos.m4
	mfhdf/fortran/vax-ultrix.m4
	mfhdf/fortran/vms.m4
	mfhdf/libsrc/README

	mfhdf/libsrc/cdftest.c
	mfhdf/libsrc/cdftest.mak
	mfhdf/libsrc/cdftest.project.hqx
	mfhdf/libsrc/descrip.mms
	mfhdf/libsrc/gen_sds_szipped.c
	mfhdf/libsrc/hdftest.c
	mfhdf/libsrc/hdftest.h
	mfhdf/libsrc/hdftest.mak
	mfhdf/libsrc/hdftest.project.hqx
	mfhdf/libsrc/htons.mar
	mfhdf/libsrc/mfhdflib.project.hqx
	mfhdf/libsrc/msoft.mk
	mfhdf/libsrc/ntohs.mar
	mfhdf/libsrc/sds_szipped.dat
	mfhdf/libsrc/tchunk.c
	mfhdf/libsrc/tcomp.c
	mfhdf/libsrc/tcoordvar.c
	mfhdf/libsrc/tdatasizes.c
	mfhdf/libsrc/tdim.c
	mfhdf/libsrc/temptySDSs.c
	mfhdf/libsrc/tfile.c
	mfhdf/libsrc/tidtypes.c
	mfhdf/libsrc/tncunlim.c
	mfhdf/libsrc/tnetcdf.c
	mfhdf/libsrc/trank0.c
	mfhdf/libsrc/tsd.c
	mfhdf/libsrc/tsdsprops.c
	mfhdf/libsrc/tszip.c
	mfhdf/libsrc/tunlim.c
	mfhdf/libsrc/win32cdf.h
	mfhdf/libsrc/win32cdf.mak

        mfhdf/ncdump/ncdump.mak
        mfhdf/ncdump/msoft.mk
        mfhdf/ncdump/msofttab.c
        mfhdf/ncdump/ctest0.mak
        mfhdf/ncdump/ncdump.lnk

        mfhdf/ncgen/test0.lnk
        mfhdf/ncgen/ncgen.opt
        mfhdf/ncgen/msoft.mk
        mfhdf/ncgen/ncgen.mak
        mfhdf/ncgen/ctest0.mak
        mfhdf/ncgen/descrip.mms


        mfhdf/port/COPYRIGHT
        mfhdf/port/CUSTOMIZE
        mfhdf/port/HISTORY
        mfhdf/port/Makefile.am
        mfhdf/port/Makefile.in
        mfhdf/port/VERSION
        mfhdf/port/aclocal.m4
        mfhdf/port/configure
        mfhdf/port/configure.in
        mfhdf/port/depend
        mfhdf/port/mast_mk.in
        mfhdf/port/master.mk.in
        mfhdf/port/uddummy.c
        mfhdf/port/udposix.h.in
        mfhdf/port/udposixh.in
        mfhdf/port/which

	hdf/COPYING
	hdf/COPYRIGHT
	hdf/README
	hdf/README.33r4

        hdf/fmpool/Makefile.in
	hdf/fmpool/README
	hdf/fmpool/cdefs.h
	hdf/fmpool/compat.h
	hdf/fmpool/config.guess
	hdf/fmpool/config.sub
	hdf/fmpool/configure
	hdf/fmpool/configure.in
	hdf/fmpool/fmpio.3
	hdf/fmpool/fmpio.c
	hdf/fmpool/fmpio.h
	hdf/fmpool/fmpool.3
	hdf/fmpool/fmpool.c
	hdf/fmpool/fmpool.h
	hdf/fmpool/fmptypes.h
	hdf/fmpool/move-if-change
	hdf/fmpool/queue.h
	hdf/fmpool/test_fmpio.c
	hdf/fmpool/tfmpio_read.c
	hdf/fmpool/tfmpio_write.c

	hdf/fmpool/config/fmpaix.h
	hdf/fmpool/config/fmpalpha.h
	hdf/fmpool/config/fmpconvex.h
	hdf/fmpool/config/fmpdec.h
	hdf/fmpool/config/fmpfbsd.h
	hdf/fmpool/config/fmpfujivp.h
	hdf/fmpool/config/fmphpux.h
	hdf/fmpool/config/fmpia64.h
	hdf/fmpool/config/fmpirix32.h
	hdf/fmpool/config/fmpirix4.h
	hdf/fmpool/config/fmpirix5.h
	hdf/fmpool/config/fmpirix6.h
	hdf/fmpool/config/fmplinux.h
	hdf/fmpool/config/fmpmac.h
	hdf/fmpool/config/fmpsolaris.h
	hdf/fmpool/config/fmpsun.h
	hdf/fmpool/config/fmpt3e.h
	hdf/fmpool/config/fmpunicos.h
	hdf/fmpool/config/mh-aix
	hdf/fmpool/config/mh-alpha
	hdf/fmpool/config/mh-convex
	hdf/fmpool/config/mh-decstation
	hdf/fmpool/config/mh-fbsd
	hdf/fmpool/config/mh-fujivp
	hdf/fmpool/config/mh-hpux
	hdf/fmpool/config/mh-ia64
	hdf/fmpool/config/mh-irix32
	hdf/fmpool/config/mh-irix4
	hdf/fmpool/config/mh-irix5
	hdf/fmpool/config/mh-irix6
	hdf/fmpool/config/mh-linux
	hdf/fmpool/config/mh-mac
	hdf/fmpool/config/mh-solaris
	hdf/fmpool/config/mh-sun
	hdf/fmpool/config/mh-t3e
	hdf/fmpool/config/mh-unicos

	hdf/src/hdf.bld
	hdf/src/hdflib.project.hqx
	hdf/src/hdfnof.bld
	hdf/src/hdfnofw3.lbc
	hdf/src/hdfnofwc.lbc
	hdf/src/hdfw386.lbc
	hdf/src/hdfwcc.lbc
	hdf/src/makepc.386
        hdf/src/makepc.msc
	hdf/src/makepc.wcc
	hdf/src/makewin.msc
	hdf/src/win32hdf.mak

        hdf/util/fp2hdf.mak
	hdf/util/hdf24to8.mak
	hdf/util/hdf2jpeg.mak
	hdf/util/hdf8to24.mak
	hdf/util/hdfcomp.mak
	hdf/util/hdfed.mak
	hdf/util/hdfls.mak
	hdf/util/hdfpack.mak
	hdf/util/hdftopal.mak
	hdf/util/hdftor8.mak
	hdf/util/hdfunpac.mak
	hdf/util/jpeg2hdf.mak
	hdf/util/makepc.386
	hdf/util/makepc.msc
	hdf/util/paltohdf.mak
	hdf/util/r8tohdf.mak
	hdf/util/ristosds.mak
	hdf/util/vcompat.mak
	hdf/util/vmake.mak
	hdf/util/vshow.mak

	hdf/test/MAKECOM.OLD
	hdf/test/makepc.386
	hdf/test/makepc.msc
	hdf/test/makewin.msc
	hdf/test/makewin.new
	hdf/test/testhdf.386
	hdf/test/testhdf.def
	hdf/test/testhdf.lnk
	hdf/test/testhdf.pc
	hdf/test/testhdf.project.hqx
	hdf/test/win32tst.mak


 
