This file contains a high-level description of this package's evolution. Entries are in reverse chronological order (most recent first). VERSION COMMENTS ------- -------- 4.1.3-rc1 2011-05-06 Stop looking for xdr if --disable-dap is used. Don't try to run (some) fortran configure tests on machines with no fortran. Allow nccopy to rechunk with chunksizes larger than current dimension lengths. Initial implementation of CDMREMOTE is complete; needs comprehensive testing. 4.1.3-beta1 2011-04-29 Fixed szlib not linking bug. Fixed dreaded "nofill bug", lurking in netCDF classic since at least 1999. Writing more than a disk block's worth of data that crossed disk block boundaries more than a disk block beyond the end of file in nofill mode could zero out recently written earlier data that hadn't yet been flushed to disk. Changed setting for H5Pset_libver_bounds to ensure that all netCDF-4 files can be read by HDF5 1.8.x. Merged libncdap3 and libncdap4 into new libdap2 library. The suffix dap2 now refers to the dap protocol. This is in prep for adding dap4 protocol support. Took out --with-hdf5 and related options due to high cost of maintaining this non-standard way of finding libraries. 4.1.2 2011-03-29 Changes in build system to support building dlls on cygwin/mingw32. Changes to fix portability problems and get things running on all test platforms. Some minor documentation fixes. Fixed opendap performance bug for nc_get_vars; required adding nc_get_var{s,m} to the dispatch table. Now check for libz in configure.ac. Fixed some bugs and some performance problems with default chunksizes. 4.1.2-beta2 2011-01-11 Add "-c" option to nccopy to specify chunk sizes used in output in terms of list of dimension names. Rewrite netCDF-4 attribute put code for a large speedup when writing lots of attributes. Fix nc-config --libs when static dependent libraries are not installed in the same directory as netCDF libraries (thanks to Jeff Whitaker). Build shared libraries by default, requiring separate Fortran library. Static libraries now built only with --disable-shared. Refactor of HDF5 file metadata scan for large speedup in opening files, especially large files. Complete rewrite of the handling of character datalist constants. The heuristics are documented in ncgen.1. Eliminate use of NC_MAX_DIMS and NC_MAX_VARS in ncdump and nccopy, allocating memory as needed and reducing their memory footprint. Add documentation for new nc_inq_path() function. Use hashing to speedup lookups by name for files with lots of dimensions and variables (thanks to Greg Sjaardema). Add options to nccopy to support uniform compression of variables in output, shuffling, and fixing unlimited dimensions. Documented in nccopy.1 man page and User's Guide. 4.1.2-beta1 2010-07-09 Fix "ncdump -c" bug identifying coordinate variables in groups. Fix bug in libsrc/posixio.c when providing sizehint larger than default, which then doesn't get used (thanks to Harald Anlauf). Fix netCDF-4 bug caused when doing enddef/redef and then defining coordinate variable out of order. Fixed bug in man4 directory automake file which caused documentation to be rebuilt after make clean. Turned off HDF5 caching when parallel I/O is in use because of its memory use. Refactoring of netCDF code with dispatch layer to decide whether to call netCDF classic, netCDF-4, or opendap version of a function. Refactoring of netCDF-4 memory internals to reduce memory use and end dependance on NC_MAX_DIMS and NC_MAX_NAME. Modified constraint parser to be more compatible with a java version of the parser. Modified ncgen to utilize iterators internally; should be no user visible effect. Fixed two large-file bugs with using classic format or 64-bit offset format and accessing multidimensional variables with more than 2**32 values. 4.1.1 2010-04-01 Fixed various build issues. Fixed various memory bugs. Fixed bug for netCDF-4 files with dimensions and coord vars written in different orders, with data writes interspersed. Added test for HDF5-1.8.4 bug. Added new C++ API from Lynton Appel. 4.1 2010-01-30 Much better memory leak checking with valgrind. Added per-variable chunk cache control for better performance. Use nc_set_var_chunk_cache / nf_set_var_chunk_cache / nf90_set_var_chunk_cache to set the per-variable cache. Automatically set per-variable chunk cache when opening a file, or creating a variable, so that the cache is big enough for more than one chunk. (Can be overridden by user). Settings may be changed with configure options --max-default-chunk-size and --default-chunks-in-cache. Better default chunks size. Now chunks are sized to fit inside the DEFAULT_CHUNK_SIZE (settable at configure time with --with-default-chunk-size= option.) Added nccopy utility for converting among netCDF format variants or to copy data from DAP servers to netCDF files. The oc library has been modified to allow the occurrence of alias definitions in the DAS, but they will be ignored. The old ncgen has been moved to ncgen3 and ncgen is now the new ncgen4. Modified --enable-remote-tests to be on by default. Fixed the nc_get_varm code as applied to DAP data sources. Added tests for nc-config. Many documentation fixes. Added capability to use the parallel-netcdf (a.k.a. pnetcdf) library to perform parallel I/O on classic and 32-bit offset files. Use the NC_PNETCDF mode flag to get parallel I/O for non-netcdf-4 files. Added libcf library to netCDF distribution. Turn it on with configure option --with-libcf. Added capability to read HDF4 files created with the SD (Scientific Data) API. The DAP support was revised to closely mimic the original libnc-dap support. Significantly revised the data handling mechanism in ncgen4 to more closely mimic the output from the original ncgen. Added prototype NcML output capability to ncgen4. It is specified by the -lcml flag. Added capabilty to read HDF5 files without dimension scales. This will allow most existing HDF5 datasets to be read by netCDF-4. Fixed bug with endianness of default fill values for integer types when variables are created with a non-native endiannesss and use the default fill value. Significant refactoring of HDF5 type handling to improve performance and handle complicated nesting of types in cross-platform cases. Added UDUNITS2 to the distribution. Use --with-udunits to build udunits along with netcdf. Made changes suggested by HDF5 team to relax creation-order requirement (for read-only cases) which allows HDF5 1.6.x files to be retrofitted with dimension scales, and be readable to netCDF-4. Handle duplicate type names within different groups in ncdump. Fix group path handling in absolute and relative variable names for "-v" option. Added nc-config shell script to help users build netCDF programs without having to figure out all the compiler options they will need. Fixed ncdump -s bug with displaying special attributes for classic and 64-bit offset files. For writers, nc_sync() now calls fsync() to flush data to disk sooner. The nc_inq_type() function now works for primitive types. 4.0.1 2009-03-26 Added optional arguments to F90 API to nf90_open/create, nf90_create_var, and nf90_inquire_variable so that all netCDF-4 settings may be accomplished with optional arguments, instead of separate function calls. Added control of HDF5 chunk cache to allow for user performance tuning. Added parallel example program in F90. Changed default chunking to better handle very large varibles. Made contiguous the default for fixed size data sets with no filters. Fixed bug in nc_inq_ncid; now it returns NC_ENOGRP if the named group is not found. Fixed man pages for C and F77 so that netCDF-4 builds will result in man pages that document new netCDF-4 functions. Added OPeNDAP support based on a new C-only implementation. This is enabled using --enable-dap option and requires libcurl. The configure script will attempt to locate libcurl, but if it fails, then its location must be specified by the --with-curl option. 4.0.1-beta2 2008-12-26 Changed chunksizes to size_t from int. Fixed fill value problem from F77 API. Fixed problems in netcdf-4 files with multi-dimensional coordinate variables. Fixed ncgen to properly handle CDL input that uses Windows line endings ("\r\n"), instead of getting a syntax error. Added "-s" option to ncdump to display performance characterisitics of netCDF-4 files as special virtual attributes, such as _Chunking, _DeflateLevel, _Format, and _Endianness. Added "-t" option to ncdump to display times in human readable form as strings. Added code to interpret "calendar" attribute according to CF conventions, if present, in displaying human-readable times. Added experimental version of ncgen4 capable of generating netcdf-4 data files and C code for creating them. In addition, it supports the special attributes _Format, etc. 4.0.1-beta1 2008-10-16 Fixed Fortran 90 int64 problems. Rewrote HDF5 read/write code in accordance with performance advice from Kent. Fixed memory leaks in gets/puts of HDF5 data. Fixed some broken tests for parallel I/O (i.e. MPI) builds. Fixed some cross-compile problems. Rewrote code which placed bogus errors on the HDF5 error stack, trying to open non-existant attributes and variables. Now no HDF5 errors are seen. Removed man subdirectory. Now man4 subdirectory is used for all builds. Changed build so that users with access to parallel make can use it. Added experimental support for accessing data through OPeNDAP servers using the DAP protocol (use --enable-opendap to build it). Fixed ncdump bugs with array field members of compound type variables. Fixed ncdump bug of assuming default fill value for data of type unsigned byte. 4.0 2008-05-31 Introduced the use of HDF5 as a storage layer, which allows use of groups, user-defined types, multiple unlimited dimensions, compression, data chunking, parallel I/O, and other features. See the netCDF Users Guide for more information. 3.6.3 2008-05-31 In ncdump and ncgen, added CDL support for UTF-8 encoding of characters in names and for escaped special chars in names. Made sure UTF-8 names are normalized using NFC rules before storing or comparing. Handle IEEE NaNs and infinities in a platform-independent way in ncdump output. Added support for ARM representation of doubles, (thanks to Warren Turkal). Fixed bug in C++ API creating 64-bit offset files. (See http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#cxx_64-bit.) Fixed bug for variables larger than 4 GB. (See http://www.unidata.ucar.edu/software/netcdf/docs/known_problems.html#large_vars_362.) Changed the configure.ac to build either 3.6.x or 4.x build from the same configure.ac. Build now checks gfortran version and handles it cleanly, also Portland Group in Intel fortran, with various configurations. A Fortran netcdf.inc file is now created at build time, based on the setting of --disable-v2. Documentation has been fixed in several places. Upgraded to automake 1.10, autoconf 2.62, and libtool 2.2.2. Includes missing Windows Visual Studio build files. Fixed missing include of config.h in a C++ test program. Fixed maintainer-clean in man directory. Fixed --enable-c-only and make check. Fixed behavior when opening a zero-length file. Many portability enhancements to build cleanly on various platforms. Turned on some old test programs which were not being used in the build. 3.6.2 2007-03-05 Released. 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 of netCDF tutorial before the 3.6.2 release. 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 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 . 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.