This file contains a high-level description of this package's evolution.
Entries are in reverse chronological order (most recent first).

VERSION         COMMENTS
-------         --------
		
3.6.2 beta6    2007-01-20
		
		Fine tuning of build system to properly handle cygwin,
		Mingw, and strange configuration issues.

		Automake 1.10 has a problem with running our tests on
		MinGW, so I'm switching back to automake 1.9.6 for
		this release.

3.6.2 beta5    2006-12-30

		Now netCDF configuration uses autoconf 2.61, and
		automake 1.10. (Thanks to Ralf Wildenhues for the
		patches, and all the autotools help in general!)

		Final major revision (I hope!) of netCDF tutorial
		before the 3.6.2 release. Now the tutorial contains
		all the content that I think it should. (Ed)

		Now netCDF builds under MinGW, producing a windows DLL
		with the C and F77 APIs. Use the --enable-shared --enable-dll
		--disable-cxx --disable-f90 flags to configure. (C++
		and F90 have never been built as windows DLLs, but
		might be in a future release if there is user
		interest). This has all been documented in the netCDF
		Porting and Installation Guide.

		Now extreme numbers (i.e. those close to the limits of
		their type) can be turned off in nc_test/nf_test, with
		--disable-extreme-numbers. It is turned off
		automatically for Solaris i386 systems.	

		Added --enable-c-only option to configure. This causes
		only the core netCDF-3 C library to be built. It's the
		same as --disable-f77 --disable-cxx --disable-v2
		--disable-utilities.

		Added --disable-utilities to turn off building and
		testing of ncgen/ncdump.

	        Fix a long-standing bug in nf90_get_att_text() pointed
	        out by Ryo Furue, to make sure resulting string is
	        blank-padded on return.  This is fixed in the
	        Fortran-90 interface, but is impractical to fix in the
	        Fortran-77 interface implemented via cfortran.h.

		Now large file tests are run if --enable-large-file-tests
		is used in the configure.

		For Cray users, the ffio module is used if the
		--enable-ffio option is passed to configure.

	        Unrolled loops in byte-swapping code used on
	        little-endian platforms to reduce loop overhead. This
	        optimization resulted in a 22% speedup for some
	        applications accessing floats or ints (e.g. NCO
	        utilities ncap and ncbo) and a smaller speedup for
	        shorts or doubles.

                Added "-k" option to ncdump and ncgen, for identifying
                and specifying the kind of netCDF file, one of
                "classic", "64-bit-offset", "hdf5", or "hdf5-nc3".
                Removed output of kind of netCDF file in CDL comment
                produced by ncdump.

		Fixed bug of ncdump seg-faulting if invoked
		incorrectly with option like "-c" or "-h" but no file
		name.

3.6.2 beta4    2006-08-15

		Changed F77/F90 man pages from netcdf.3f and
		netcdf.3f90 to netcdf_f77.3 and netcdf_f90.3. Also
		fixed broken install of man pages.

		Changed configure script so that "-g -O2" is no longer
		set as CFLAGS, CXXFLAGS, and FFLAGS by default if a
		GNU compiler is being used. Now nothing is set.
	
		Changed configure script so that fortran flag is set
		in config.h.

		Updated Installation and Porting Guide, C++
		Interface Guide, F77 and F90 Interface Guides.

		Build with static libraries by default.

		Added configure option --enable-separate-fortran,
		which causes the fortran library to be built
		separately. This is turned on automatically for shared
		libraries.

		Improved clarity of error messages.

		Changed configuration to get cygwin DLL and mingw DLL
		builds working, for the C library only (i.e. no
		F77, F90, or C++ APIs).

		Changed type of ncbyte in C++ interface from unsigned
		char to signed char, for consistency with C interface.
		The C++ documentation warned this change would
		eventually occur.
		
		Changed the C++ interface to use only the netCDF-3 C
		interface instead of the older netCDF-2 C interface.
		This has the added benefit that on-the-fly numeric
		conversions are now supported using get methods, for
		example you can get data of any type as double.  When
		using --disable-v2 flag to configure, the C++
		interface can now be built and installed.

3.6.2 beta3    2006-05-24

		Changed to use default prefix of /usr/local instead of
		package-based prefix of previous releases of
		netCDF. Use the --prefix argument to the configure
		script to override the default.

		Made separate fortran library file, instead of
		appending fortran library functions to the C library
		file, if --enable-separate-fortran is used during
		configure (it's turned on automatically if
		--enable-shared is used). If uses, the fortran API
		users must link to *both* the C library and the new
		fortran library, like this: -lnetcdff -lnetcdf

		Added netCDF examples in C, C++, F77, F90, and
		CDL. See the examples subdirectory.

		Added the NetCDF Tutorial.

		Minor fixes to some of the netCDF documentation.

		Made it possible to build without V2 API using
		--disable-v2 from configure.

		Switched to new build system, with automake and
		libtool. Now shared libraries are built (as well as
		static ones) on platforms which support it. For more
		information about shared libraries, see
		http://www.unidata.ucar.edu/software/netcdf/docs/faq.html#shared_intro

		Fixed ncdump crash that happened when no arguments were 
		used.

		Fixed for building with gfortran 4.1.0.

		Important fix for machines whose SIZEOF_SIZE_T !=
		SIZEOF_LONG, such as NEC-SX, thanks to Stephen Leak.

		Fixed C++ on AIX platform.

		Fixed 64-bit builds on AIX platform.

		Removed bad assertion that could be triggered in rare
		cases when reading a small file.

		Added comments in v1hpg.c to clarify purpose of each
		internal function.

		Make sure filesize is determined in nc_close() *after*
		buffers get flushed.

		Fix long-standing problem resulting in files up to 3
		bytes longer than necessary if there is exactly one
		record variable of type byte, char, or short and if
		the number of values per record for that variable is
		not divisible by 4 (or 2 in the case of short).  Now
		the filesize determined from header info by
		NC_calcsize should be correct in all cases.

3.6.1           2006-01-31

		Updated installation manual for 3.6.1.
	
		Changed installation to try to provide correct
		compiler flags for compiling in 64-bit mode on Sun,
		Irix, AIX, and HPUX. (HPUX doesn't work for me,
		however). Now run configure with --enable-64bit to get
		a 64 bit compile.
		
		Fixed long-standing bug that would cause small netCDF
		files to be padded on the end with zero bytes to 4096
		bytes when they were opened and changed.  Now small
		files should stay small after you change a value.

		Fixed bug in assertions in putget.c that would only be
		noticed if you change the manifest constant
		NC_MAX_DIMS in netcdf.h to be different from
		NC_MAX_VAR_DIMS.

		Moved test ftest.F from fortran to nf_test directory,
		and fixed bug in ftest.F which caused it to return 0
		even if tests failed (no tests were failing,
		however). Also renamed some test
		output files to make things a little clearer.

		If open for writing, pad with up to 3 extra zero bytes
		before close to the correct canonical length,
		calculated from the header.  Previously files could be
		short due to not padding when writing in NOFILL mode.

		Doubled arbitrary limits on number of dimensions,
		variables, attributes, and length of names.

		Change name of nc_get_format() to nc_inq_format().
		Add analogous interfaces for nf_inq_format(),
		nf90_inquire(), and NcFile::get_format() to f77, f90,
		and C++ interfaces.  Document new function in texinfo
		files.  Add minimal test to nc_test, nf_test.

3.6.1-beta3     2005-02-17

		Added function nc_get_format(int ncid, int* formatp)
		that returns either NC_FORMAT_CLASSIC or
		NC_FORMAT_64BIT for a CDF1 or CDF2 file, respectively.

		Added test to nc_test that detects whether format
		version was changed after a file is reopened and
		define mode is entered.

		Correctly configure for Intel ifort Fortran compiler on Linux.

3.6.0-p1        2005-02-18

		Fixed bug that changes CDF2 files to CDF1 files if CDF2
                file is reopened for write access and either an
		attribute is changed or define mode is entered.

3.6.1-beta2     2005-1-6
	
		Fixed absoft compile problem. Maybe.

3.6.1-beta1     2005-1-3

		Fixed Cygwin C++ problem.

		Fixed large file problem in MS Visual C++.NET environment.

		More information in installation and porting guide.

3.6.0           2004-12-16

                Added texinfo source for the documentation.

                Added large file tests to Windows directory in distribution.

                Modified win32 visual studio project files so that m4
                is no longer required to build netcdf under visual studio.

                Modified rules.make to use install instead of cp,
                fixing install problem for cygwin users.
                
                Modified configure/install stuff to support HP-UX.

                Modified configure/install stuff to support G95.
        
                In the f90 interface, applied Arnaud Desitter's fixes
                to correct mismatches between scalar and array
                arguments, eliminating (legitimate) complaints by the
                NAGWare f95 compiler.  Also fixed bugs introduced in
                3.6.0-beta5 in the mapped array interfaces.

3.6.0-beta6     2004-10-05

                Fixed AIX 64-bit/largefile install problems.

                Removed FAQ section from netcdf.texi User's Guide, in
                deference to online version that can be kept up to
                date more easily.

3.6.0-beta5     2004-10-04

                Fixed assertion violation on 64-bit platforms when
                size of last fixed size variable exceeds 2^32 - 1.

                Removed another restriction on file size by making
                record size (derived from other sizes, not part of the
                format) an off_t instead of a size_t, when an off_t is
                larger than a size_t.  This permits records to be
                *much* larger in either classic format or
                64-bit-offset format.

                Incorporated patch from Mathis Rosenhauer to improve
                performance of Fortran 90 interface for calls to
                nf90_put_var_TYPE(), nf90_get_var_TYPE(),
                nf90_put_vara_TYPE(), and nf90_get_vara_TYPE()
                functions by not emulating them with the corresponding
                nf90_put_varm_TYPE() and nf90_get_varm_TYPE() calls.

                Added tests for invalid offsets in classic format when
                defining multiple large variables.

                Improved installation ease.  Have configure script use
                Large File Support as a default, if available.

                Add "extra_test" as a target for testing Large File
                Support.

3.6.0-beta3     2004-08-24

                Upgraded to recent autoconf, changed configure to 
                (hopefully) improve installation. Also added macros
                to deal with large file systems.

                Added nf_set_default_format to Fortran interface.
        
                Added testing to the set_default_format functions to
                nc_test and nf_test.

                Added documentation to the man page for
                set_default_format functions.

                Added two new error return codes to C, f77, and f90
                interfaces for invalid dimension size and for bad
                variable size.  Made test for max dimension size
                depend on whether 64-bit offsets used.  Fixed bug with
                dimension sizes between 2^31 and 2^32 (for byte
                variables).

                Fixed ncdump to properly print dimensions larger than
                2^31. 

                Fixed ncgen to properly handle dimensions between 2^31
                and 2^32.

3.6.0-beta2     
                Added -v2 (version 2 format with 64-bit offsets)
                option to ncgen, to specify that generated files or
                generated C/Fortran code should create 64-bit offset
                files.  Also added -x option to ncgen to specify use
                of no-fill mode for fast creation of large files.

                Added function to set default create mode to C
                interface (nc_set_default_create). 

                Added win32 directory, with NET subdirectory to hold
                .NET port of netCDF. To use, open netcdf.sln with
                Visual Studio, and do a clean and then a build of
                either the debug or release builds. Tests will be run
                as part of the build process. VC++ with managed
                extensions is required (i.e. VC++.NET).

                Added windows installer files to build windows binary
                installs. 

3.6.0-beta1     By incorporating Greg Sjaardema's patch, added support
                for 64-bit offset files, which remove many of the
                restrictions relating to very large files (i.e.
                larger than 2 GB.) This introduces a new data format
                for the first time since the original netCDF format
                was introduced.  Files in this new 64-bit offset
                format can't be read by earlier versions of
                netCDF. Users should continue to use the netCDF
                classic format unless they need to create very large
                files.

                The test suite, nc_test, will now be run twice, once for
                netCDF classic format testing, and once for 64-bit offset
                format testing.

                The implementation of the Fortran-77 interface has been
                adapted to version 4.3 of Burkhard Burow's "cfortran.h".

3.6.0-alpha
                Added NEC SX specific optimization for NFILL tunable
                parameter in libsrc/putget.c

                Added support for the ifc Fortran-90 compiler creating 
                files "netcdf.d" and "typesizes.d" (instead of ".mod"
                files).

                Fixed access to iargc and getarg functions from
                Fortran-90 for NAG f90 compiler, contributed by Harald
                Anlauf.

3.5.1   2004-02-03

                Updated INSTALL.html for Mac OS X (Darwin).

                Made the installation of the netCDF Fortran-90 module
                file more robust regarding the name of the file.

                Added support for eight-byte integers in Fortran90
                interface.              

                Increased advisory limits in C netcdf.h and Fortran
                netcdf.inc for maximum number of dimensions,
                variables, and attributes.

                Changed C++ declarations "friend NcFile" to "friend
                class NcFile" in cxx/netcdfcpp.h to conform to
                standard.
                
                Added Dan Schmitt's backward compatible extension to
                the C++ record interface to work with arbitrary
                dimension slices.

                Added C++ documentation note that caller is
                responsible for deleting pointer returned by
                Variable::values() method when no longer needed.

                Made C++ interface more standard; the result may not
                compile on some old pre-standard C++ compilers.

                Fixed bug in ncgen when parsing values of a
                multidimensional char variable that resulted in
                failure to pad a value with nulls on IRIX.

                Fixed ncdump bug adding extra quote to char variable
                data when using -fc or -ff option.              

                Fixed so compiling with -DNO_NETCDF_2 will work for
                building without backward-compatibility netCDF-2
                interfaces.

                Eliminated use of ftruncate(), because it fails on
                FAT32 file systems under Linux.

                Initialized a pointer in putget.m4 (used to generate
                putget.c) that was involved in uninitialized memory
                references when nc_test is run under Purify.  Two
                users had reported seeing crashes resulting from this
                problem in their applications.

                Reverted pointer initializations in putget.m4, after
                testing revealed these caused a performance problem,
                resulting in many extra calls to px_pgin and px_pgout
                when running nc_test.

                Added checking of size of "dimids" vector in function
                nf90_inquire_variable(...) and error-returning if it
                isn't sufficiently capacious.

                Added variable index to ncvarget() and ncattinq() error
                messages and attribute name to ncattinq() error message.

                Tweaked configure script to work with recent C++ compilers.

                Fixed a memory leak in C++ interface, making sure
                NcVar::cur_rec[] gets deleted in NcVar destructor.

                Reimplemented nc_sync() fix of version 3.5.0 to eliminate 
                performance penalty when synchronization is unnecessary.

                Changed order of targets in Makefile to build Fortran
                interface last, as a workaround for problem with make
                on AIX platforms.

3.5.0   2001-03-23

                Added Fortran 90 interface.

                Changed C macro TIMELEN in file cxx/nctst.cpp to
                TIMESTRINGLEN to avoid clash with macro defined on AIX
                systems in /usr/include/time.h.

                Fixed miswriting of netCDF header when exiting define
                mode.  Because the header was always written correctly
                later, this was only a problem if there was another
                reader of the netCDF file.

                Fixed explicit synchronizing between netCDF writer and
                readers via the nc_sync(), nf_sync(), and ncsync()
                functions.

                Fixed a number of bugs related to attempts to support
                shrinking the header in netCDF files when attributes
                are rewritten or deleted.  Also fixed the problem that
                nc__endef() did not work as intended in reserving
                extra space in the file header, since the extra space
                would be compacted again on calling nc_close().

                Fixed the "redef bug" that occurred when nc_enddef()
                or nf_enddef() is called after nc_redef() or
                nf_redef(), the file is growing such that the new
                beginning of a record variable is in the next "chunk",
                and the size of at least one record variable exceeds
                the chunk size (see netcdf.3 man page for a
                description of this tuning parameter and how to set
                it).  This bug resulted in corruption of some values
                in other variables than the one being added.

                The "__" tuning functions for the Fortran interface,
                nf__create, nf__open, and nf__enddef, are now
                documented in the Fortran interface man pages.

                Add an 'uninstall' target to all the Makefiles.
                Dave Glowacki <dglo@SSEC.WISC.EDU> 199810011851.MAA27335

                Added support for multiprocessing on Cray T3E.
                Hooks added by Glenn, but the majority of the work
                was done at NERSC. Also includes changes to ffio
                option specification. Patch rollup provided by
                R. K. Owen <rkowen@Nersc.GOV>. The following functions
                are added to the public interface.
                        nc__create_mp()
                        nc__open_mp()
                        nc_set_base_pe()
                        nc_inq_base_pe()

                Fixed makefile URL for Win32 systems in INSTALL file.

                Made test for UNICOS system in the configure script case
                independent.

                Ported to the following systems:
                    AIX 4.3 (both /bin/xlc and /usr/vac/bin/xlc compilers)
                    IRIX 6.5
                    IRIX64 6.5

                Changed the extension of C++ files from ".cc" to ".cpp".
                Renamed the C++ interface header file "netcdfcpp.h"
                instead of "netcdf.hh", changing "netcdf.hh" to
                include "netcdfcpp.h" for backward compatibility.

                Treat "FreeBSD" systems the same as "BSD/OS" system
                w.r.t. Fortran and "whatis" database.

                Corrected manual pages: corrected spelling of "enddef" (was
                "endef") and ensured that the words "index" and "format"
                will be correctly printed.

                Updated support for Fortran-calling-C interface by
                updating "fortran/cfortran.h" from version 3.9 to
                version 4.1.  This new version supports the Portland
                Group Fortran compiler (C macro "pgiFortran")
                and the Absoft Pro Fortran compiler (C macro
                "AbsoftProFortran").

                Corrected use of non-integral-constant-expression
                in specifying size of temporary arrays in file
                "libsrc/ncx_cray.c".

                Added Compaq Alpha Linux workstation example to INSTALL
                file.

                Ported cfortran.h to Cygnus GNU Win32 C compiler (gcc
                for Windows).

                Fixed bug in ncdump using same CDL header name when
                called with multiple files.
                
                Added new NULL data type  NC_NAT (Not A Type) to
                facilitate checking whether a variable object has had
                its type defined yet, for example when working with
                packed values.

                Fixed use of compile-time macro NO_NETCDF_2 so it
                really doesn't include old netCDF-2 interfaces, as
                intended.

                Ported to MacOS X Public Beta (Darwin 1.2/PowerPC).

                Fixed C++ friend declarations to conform to C++ standard.

                Changed INSTALL file to INSTALL.html instead.

3.4     1998-03-09

                Fixed ncx_cray.c to work on all CRAY systems,
                not just CRAY1. Reworked USE_IEG, which was incorrect.
                Reworked short support. Now USE_IEG and otherwise
                both pass t_ncx.

                To better support parallel systems, static and malloc'ed
                scratch areas which were shared in the library
                were eliminated. These were made private and on the
                stack where possible. To support this, the macros
                ALLOC_ONSTACK and  FREE_ONSTACK are defined in onstack.h.

                The buffered i/o system implementation in posixio.c
                was reimplemented to limit the number and size of read()
                or write() system calls and use greater reliance on memory
                to memory copy. This saves a great deal of wall clock time
                on slow (NFS) filesystems, especially during nc_endef().

                Added performance tuning "underbar underbar" interfaces
                nc__open(), nc__create(), and nc__enddef().

                The 'sizehint' contract between the higher
                layers and the ncio layer is consistently enforced. 

                The C++ interface has been updated so that the
                deprecated "nclong" typedef should no longer be
                required, and casts to nclong no longer necessary.  Just
                use int or long as appropriate.  nclong is still
                supported for backwards compatibility.

                The ncdump utility now displays byte values as signed,
                even on platforms where the type corresponding to a C
                char is unsigned (SGI, for example).  Also the ncdump
                and ncgen utilities have been updated to display and
                accept byte attributes as signed numeric values (with a
                "b" suffix) instead of using character constants.

                In libsrc/error.c:nc_strerror(int), explain that
                NC_EBADTYPE applies to "_FillValue type mismatch".

                Some changes to configure scripts (aclocal.m4), 
                macros.make.in and ncgen/Makefile to support
                NEC SUPER-UX 7.2.

                The "usage" messages of ncgen and ncdump include the
                string returned from nc_inq_libvers().

                Corrected some casts in the library so that all phases of
                the arithmetic computing file offsets occurs with "off_t"
                type. This allows certain larger netcdf files to be created
                and read on systems with larger (64bit) off_t.

                In ncgen, multidimensional character variables are now
                padded to the length of last dimension, instead of just
                concatenating them.  This restores an undocumented but
                convenient feature of ncgen under netCDF-2.  Also, a
                syntax error is now reliably reported if the netcdf name
                is omitted in CDL input.

                Fortran and C code generated by ncgen for netCDF
                components whose names contain "-" characters will now
                compile and run correctly instead of causing syntax
                errors.

                The library allows "." characters in names as well
                as "_" and "-" characters. A zero length name "" is
                explicitly not allowed.  The ncgen utility will now
                permit "." characters in CDL names as well.

                Memory leaks in the C++ interface NcVar::as_*() member
                functions and NcFile::add_var() member function are
                fixed.  The documentation was fixed where it indicated
                incorrectly that the library managed value blocks that
                the user is actually responsible for deleting.

                The values of the version 2 Fortran error codes have
                been modified to make the version 2 Fortran interface
                more backward compatible at the source level.

                Added support for systems whose Fortran INTEGER*1 and
                INTEGER*2 types are equivalent to the C "long" type but
                whose C "int" and "long" types differ.  An example of
                such a system is the NEC SX-4 with the "-ew" option to
                the f90 compiler (sheesh, what a system!).

                Fixed Version 2 Fortran compatibility bug: NCVGTG,
                NCVGGC, NCVPTG, and NCVPGC didn't work according to the
                Version 2 documentation if the innermost mapping value
                (i.e. IMAP[1]) was zero (indicating that the netCDF
                structure of the variable should be used).

3.3.1   1997-06-16

                One can now inquire about the number of attributes that a
                variable has using the global variable ID.

                The FORTRAN interface should now work on more systems.
                In particular:

                    It should now work with FORTRAN compilers whose
                    "integer*1" datatype is either a C "signed char",
                    "short", or "int" and whose "integer*2" datatype is
                    either a C "short" or "int".

                    It should now work with FORTRAN compilers that are
                    extremely picky about source code formatting (e.g.
                    the NAG f90 compiler).

                The dependency on the non-POSIX utility m4(1) for
                generating the C and FORTRAN manual pages has been
                eliminated.

                EXTERNAL statements have been added to the FORTRAN
                include-file "netcdf.inc" to eliminate excessive
                warnings about "unused" variables (which were actually
                functions) by some compilers (e.g. SunOS 4.1.3's f77(1)
                version 1.x).

                Building the netCDF-3 package no longer requires the
                existence of the Standard C macro RAND_MAX.

                Fixed an ncdump bug resulting in ncdump reporting
                    Attempt to convert between text & numbers
                when _FillValue attribute of a character variable set to
                the empty string "".

                Made ncgen tests more stringent and fixed various bugs
                this uncovered.  These included bugs in handling byte
                attributes on platforms on which char is unsigned,
                initializing scalar character variables in generated C
                code under "-c" option, interspersing DATA statements
                with declaration statements in generated Fortran code
                under "-f" option, handling empty string as a value
                correctly in generated C and Fortran, and handling
                escape characters in strings.  The Fortran output under
                the "-f" option was also made less obscure and more
                portable, using automatic conversion with netCDF-3
                interfaces instead of "BYTE", "INTEGER*1", or
                "INTEGER*2" declarations.

                Fixed a C++ interface problem that prevented compiling
                the C++ library with Digital's cxx compiler.

                Made ncgen "make test" report failure and stop if test
                resulted in a failure of generated C or Fortran code.

                The file that you are now reading was created to contain
                a high-level description of the evolution of the
                netCDF-3 package.

3.3     1997-05-15

                The production version of the netCDF-3 package was
                released.

                A comparison of the netCDF-2 and netCDF-3 releases can
                be found in the file COMPATIBILITY.
