netCDF version 2.4 is now available

Hi,

We're pleased to announce that version 2.4 of netCDF is now available.

You can read the Release Notes with a WWW browser from the URL

    http://www.unidata.ucar.edu/packages/netcdf/release-notes.html

or read the rest of this message for a text version of the Release Notes.

Russ Rew
Steve Emmerson
Glenn Davis
Harvey Davies

UCAR Unidata Program
http://www.unidata.ucar.edu

____________________________________________________________________________

NetCDF 2.4 Release Notes

Version 2.4 of Unidata's netCDF software is now available via anonymous FTP
from 

    ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.Z

Instructions for installation are contained in the INSTALL file that
accompanies the software.

This release provides a new version of the netCDF software that incorporates
support for new platforms and updated versions of previously-supported
platforms, provides new optimizations, improves the documentation,
incorporates fixes for reported bugs, and includes other miscellaneous
improvements.  Version 2.4 is intended to be a stable release incorporating
bug fixes and improvements that do not involve significant additions to the
netCDF data model or interfaces.

____________________________________________________________________________

Platforms

This release has been built and tested on the following platforms:

   * AIX-4.1 (IBM Powerstation)
   * HPUX-9.05 (HP PA-RISC)
   * IRIX-5.3 (SGI Indigo2)
   * IRIX64-6.1 (SGI Power Indigo2)
   * MSDOS using gcc, f2c, and GNU make (IBM PS/2, 386)
   * OpenVMS-6.2 (Digital MicroVAX)
   * OSF1-3.2 (Digital Alpha)
   * OS/2 2.1 (Gateway, 486)
   * SunOS-4.1.4 (Sun SPARCstation)
   * SunOS-5.4, SunOS-5.5 (Sun SPARCstation)
   * ULTRIX-4.3 (Digital VAXstation)
   * ULTRIX-4.5 (Digital DECstation)
   * UNICOS-8 (Cray Y-MP, T3D)
   * Windows NT-3.51 (Pentium)

In all cases tests of the C and Fortran interfaces were successful. The C++
interface test worked on all platforms except OpenVMS and UNICOS, for which
we had no access to a suitable C++ compiler.

The new release integrates the use of the nclong typedef into the netCDF
implementation. This means that C/C++ programs on platforms with

  sizeof(long) > sizeof(int)

(e.g. the DEC Alpha) will have to be recompiled and must use nclong as the
variable type corresponding to NC_LONG data. All programs that use NC_LONG
data should also use the nclong data type to declare such data for
portability.

____________________________________________________________________________

Optimizations

Significant optimizations are included for Cray UNICOS platforms. The Cray
optimizations use the Cray FFIO library with buffering user-configurable
through an environment variable. These optimizations make netCDF on the Cray
competitive with Fortran binary I/O. Thanks to Jeff Kuehn and Steve Luzmoor
for contributing these optimizations.

____________________________________________________________________________

Documentation Improvements

The NetCDF User's Guide has been significantly revised, including some
important additions. Changes include the following:

   * a new appendix that formally specifies the netCDF format, independent
     of its implementation;
   * a new section on limitations of the netCDF data model and
     implementation;
   * a new section on compiling and linking with the netCDF library;
   * a new section on UNICOS optimization;
   * a new section discussing the correspondence between CDL, netCDF,
     Fortran, and C data types;
   * clarification of, and some changes to, recommended standard attribute
     conventions;
   * clarification of cross-section access, strided access, and mapped
     access to arrays;
   * better embedding of URLs, so the derived HTML form of the User's Guide
     has working links to external documents and references; and
   * a more useful Index.

The new NetCDF User's Guide is included in the netCDF 2.4 source
distribution, but is also available independently in three forms:

HTML
     as a set of HTML documents for viewing with a web browser.
PostScript
     as a compressed PostScript file. When uncompressed, this is suitable
     for printing or viewing with a PostScript viewer. (In the PostScript
     file, the Table of Contents is printed last, so please reorder before
     duplicating.)
Info files
     as a compressed tar file of Info files, suitable for viewing with an
     Info documentation browsing system such as xinfo or GNU info.

The supplementary class documentation for the C++ interface has also been
revised and expanded.

____________________________________________________________________________

Other Improvements

Limitations in the ncgen utility program on the maximum number of variables,
dimensions, or attributes have been eliminated. The size of the ncgen
executable is now significantly smaller.

The ncdump program now uses the underscore character (_) to display
fill-values (data that hasn't been written yet or missing values). The ncgen
utility recognizes these, as well as the old FloatInf and DoubleInf symbols
for backward compatibility.

This release increases advisory limits for the maximum number of dimensions,
variables, and attributes in a netCDF file, to accommodate users who found
the old limits constraining. These limits are still advisory, to make
applications easier to write when dynamic memory allocation would be awkward
or impractical (e.g. in Fortran applications). The maximum number of
dimensions per netCDF file has been increased from 32 to 100. The maximum
number of variables per netCDF file has been increased from 512 to 2000. The
maximum number of attributes per variable has been increased from 512 to
2000.

The experimental C++ interface has been integrated into the netCDF
distribution and is now built by default as part of the installation, if a
suitable C++ compiler is available. C++ interface changes include:

   * New get_rec(), put_rec(), and set_rec() member functions were added to
     the NcVar class to make it easier to step through records and access
     just one record of variable data.
   * A new get_index() member function was added to the NcVar class that
     finds the record number of the first variable that matches a specified
     key.
   * The NcFile class hierarchy was simplified in a backward-compatible way,
     to make it easier for users to derive their own specialized netCDF file
     classes.

Thanks to Dan Schmitt of Texas A&M University for contributing these
additions.

In the C++ interface, you can no longer use unadorned integer constants to
put attribute values, because it's ambiguous whether you intend the
attribute type to be byte, short, or long. You can get the right attribute
type by casting or using a variable value of the appropriate type. Another
similar problem led to the removal of as_int() member functions, because of
ambiguity and portability problems. You now have to use as_short() or
as_nclong() to access a variable value as an integer. Similarly, we removed
overloading on int and int* data types where it would encourage writing
nonportable programs that behave differently on machines with different int
sizes.

____________________________________________________________________________

Bug Fixes

The 2.4 release contains fixes for bugs in the previous 2.3.2 release. Below
we list the most significant fixes. A more complete list is in the CHANGES
file in the distribution.

C library fixes:

   * Fixed the `xdr_NC_fill' bug in ncrecput(), which misbehaved if invoked
     after reading a non-record variable.
   * Fixed ncredef() bug that caused a segmentation violation from
     dereferencing a null pointer if ncredef() was called immediately after
     nccreate().
   * Fixed bug that occurred when reentering definition mode to add a new
     record variable to a file that had only one record variable of type
     NC_BYTE, NC_CHAR, or NC_SHORT. In these cases, a special-case
     optimization was used to avoid padding each record value out to four
     bytes, but the redefinition was not accounting for this optimization.
   * Fixed bugs so ncvarid() and ncdimid() will work on a variable or
     dimension that has been renamed to a shorter name while in data mode.
   * Makefile and configuration fixes for more robust adaptation to various
     platforms
   * The ncsync() function was changed to re-read the header on files opened
     for writing in addition to re-reading the header on files opened for
     read-only access, as in the previous version.
   * New names of variables and dimensions renamed in define mode will now
     be immediately recognized.
   * For VMS platforms, files opened with "ctx=stm" keyword to use stream
     mode. This will permit reading netCDF files from VMS system that have
     been FTPd in binary mode from a UNIX system without modifying RMS
     attributes after file transfer.

Fortran library fixes:

   * Improved error handling from the Fortran interface, where failures from
     C calls were occasionally not reflected in Fortran error returns. In
     particular, the library now catches attempts to retrieve information
     when no attributes, dimensions, or variables are defined yet. Attempts
     to rename components in files opened for read-only access now fail
     properly.
   * Improved error message from Fortran interface when user forgets to
     include netcdf.inc and then calls NCCRE or NCOPN.
   * Corrected a few bugs in the Fortran interface module
     (fortran/jackets.src) dealing with interconversion between Fortran
     INTEGERs and C longs.
   * Added SINGLE_PRECISION to `fortran/fortc' system and modified file
     fortran/ftest.src accordingly.

C++ library fixes:

   * Several memory leaks were plugged.
   * Tested that file was not in define mode when NcFile::sync() is called.
   * Changed return type of NcVar::edges() from const long* to long*, to
     make the result modifiable for immediate use in accessing array
     sections.
   * Fixed bug in NcVar::set_cur() to allow extending along record
     dimension.
   * Fixed off-by-one problem with strings.
   * Made changes necessary to work with g++.
   * Fixed a bug in NcVar::get_att(NcToken) member, to make it return 0 for
     attributes that don't exist.
   * NcAtt::is_valid() had been returning FALSE for global attributes, but
     this fix makes it return TRUE when appropriate.
   * NcAtt::remove() member function now checks to make sure in define_mode
     first, before deleting attribute.

Utility program fixes:

   * Fixed a problem with ncgen -f that showed up on AIX, where
     double-precision constants like 1.5d+30 were being stored using
     single-precision representations, such as 1.5e+30.
   * Fixed ncgen to accept null-string attributes.
   * Fixed ncgen to print an error message when a duplicate attribute for a
     variable is declared in CDL input.
   * Fixed ncgen handling of hexadecimal notation for byte constants, so now
     '\x80' works as documented for specifying a byte value, for example.
   * Fixed ncgen to permit variable, dimension, and attribute names to
     contain the string "netcdf".
   * Incorporated Brian Lincoln's fix for the way ncgen handles
     multidimensional strings, providing padding in the most rapidly-varying
     dimension instead of just concatenating the strings.
   * Made ncgen generate an error message when the type of the _FillValue
     attribute doesn't match the type of the associated variable. The
     library is supposed to catch all these, but doesn't for record
     variables.
   * Fixed bug with ncgen generating C or Fortran programs that didn't use
     ".nc" file extensions on created netCDF files.
   * Use of the "-f" option of ncdump for annotating with full attributes
     caused multidimensional character arrays to be incorrectly annotated
     (the comma delimiter was missing).
   * Some ncdump option combinations caused memory leaks.
   * Fixed ncdump bug that appeared on some platforms when dumping a
     0-length attribute. Now ncdump will represent a 0-length attribute of
     any type as the empty string, since CDL has no syntax for 0-length
     attributes.

____________________________________________________________________________

Providing Feedback

Questions or suggestions about this release may be sent to
<support@xxxxxxxxxxxxxxxx>, mentioning the platform and version of the
software.
____________________________________________________________________________


  • 1996 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: