Hi,
We are pleased to announce the availability of Version 3.4 of netCDF.
For the HTML version of this announcement, see the "What's New with
NetCDF?" page at
http://www.unidata.ucar.edu/packages/netcdf/whatsnew.html
An update to netCDF version 3.3.1 is now available. The major
improvements are large file support, performance enhancements, and
improved Cray platform support. Version 3.4 also includes some bug
fixes.
The netCDF 3.4 release is available in source form as a compressed tar
file from <ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf.tar.Z>. Binary
versions are available for many platforms from
<ftp://ftp.unidata.ucar.edu/pub/binary/>.
On systems that support very large files (exceeding 2 Gbytes), such as
IRIX 6.x or SunOS 5.6 with the large file compilation environment, it
is possible to create and access very large netCDF files with version
3.4. The remaining size constraints are that the file offset to the
beginning of the record variables (if any) must be less than 2 Gbytes,
and the relative offset to the start of each fixed length variable or
each record variable within a record must be less than 2 Gbytes.
Hence, a very large netCDF file might have
* no record variables, some ordinary fixed-length variables, and a
very large (exceeding 2 Gbytes) fixed-length variable; or
* some ordinary fixed-length and record variables, and a very large
record variable; or
* some ordinary fixed-length and record variables and a huge number
of records.
If you create very large netCDF files, remember that they will only be
usable on other systems that support very large files. The netCDF file
format has not changed, so files less than 2 Gbytes in size are still
writable and readable on all systems on which netCDF is supported.
Significant performance improvements in version 3.4 may be seen when
calling nc_endef or nf_endef on NFS-mounted file systems. Another
performance-related enhancement is the addition of three new tuning
interfaces for C and Fortran that permit specifying file layout and
buffer size parameters when creating, opening, or changing the header
of a file. In particular, it is possible to reserve some extra space
in the file header and fixed-length sections of a netCDF file so that
later additions of new variables, dimensions, or attributes may avoid
copying the data. See the reference documentation for details on these
new interfaces.
Full support for netCDF-2 interfaces is still included.
Bug Fixes
* Fixed a problem using netCDF on IRIX 6.x with NFS-mounted
directories.
* The error message associated with NC_EBADTYPE now explains that it
applies to a "_FillValue type mismatch".
* 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.
* Fixed a version 2 Fortran compatibility bug: NCVGTG, NCVGGC,
NCVPTG, and NCVPGC didn't work according to the version 2
documentation if the innermost mapping value (IMAP[1]) was zero
(indicating that the netCDF structure of the variable should be
used).
* Memory leaks in the C++ interface NcVar::as_*() member functions
and NcFile::add_var() member function are fixed. The documentation
no longer indicates incorrectly that the library manages value
blocks that the user is actually responsible for deleting.
* In ncgen, multidimensional character variables are now padded to
the length of the 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.
* Fixed a bug in ncgen handling a global _FillValue attribute.
Portability Improvements
* 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 the t_ncx test.
* Added support for NEC SUPER-UX 7.2.
* 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.
* 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.
* Included a workaround for a problem using gcc under SunOS 4
systems to use fixed prototypes when building netCDF.
Performance Enhancements
* Added performance tuning "underbar underbar" interfaces
nc__open(), nc__create(), and nc__enddef() for C and similar
interfaces for Fortran. The new functions have extra parameters
which allow control of the netCDF internals with respect to I/O
buffering and file layout, and permit reserving space in the
header and fixed-size variable sections for later additions that
avoid copying.
* 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) file
systems, especially during nc_endef().
Miscellaneous Changes
* 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.
* 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.
* The library now allows "." characters in names for variables,
dimensions, and attributes, 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.
* 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.
Platforms Tested
The netCDF 3.4 release has been built and tested on the following
platforms. See the INSTALL file accompanying the release for details.
* AIX-4.2
* BSD/OS 3.0
* HPUX-10.20
* IRIX-5.3, IRIX-6.2, IRIX64-6.2, IRIX64-6.4
* Linux 2.0.31
* OSF1-4.0
* SunOS-4.1.4, SunOS-5.6 (Sparc and i386)
* SUPER-UX 7.2 (NEC SX-4)
* ULTRIX-4.4
* UNICOS-9.0 (C90, T3D), 9.1 (T90), 10.0 (J90), UNICOS/mk 2.0 (T3E)
--Russ Rew
Glenn Davis
Steve Emmerson
Unidata Program Center