v4.7.4 to v4.8.0 ABI and ABI Compatibility Report
Generated with the following command, using docker:
$ docker run --rm -it -e OLDVER=v4.7.4 -e NEWVER=v4.8.0 -v $(pwd):/output unidata/ncabi
4.8.0 - March 30, 2021
- [Enhancement] Bump the NC_DISPATCH_VERSION from 2 to 3, and as a side effect, unify the definition of NC_DISPATCH_VERSION so it only needs to be defined in CMakeLists.txt and configure.ac. See Github #1945 for more information.
- [Enhancement] Provide better cross platform path name management. This converts paths for various platforms (e.g. Windows, MSYS, etc.) so that they are in the proper format for the executing platform. See Github #1958 for more information.
- [Bug Fixes] The nccopy program was treating -d0 as turning deflation on rather than interpreting it as "turn off deflation". See Github #1944 for more information.
- [Enhancement] Add support for storing NCZarr data in zip files. See Github #1942 for more information.
- [Bug Fixes] Make fillmismatch the default for DAP2 and DAP4; too many servers ignore this requirement.
- [Bug Fixes] Fix some memory leaks in NCZarr, fix a bug with long strides in NCZarr. See Github #1913 for more information.
- [Enhancement] Add some optimizations to NCZarr, dosome cleanup of code cruft, add some NCZarr test cases, add a performance test to NCZarr. See Github #1908 for more information.
- [Bug Fix] Implement a better chunk cache system for NCZarr. The cache now uses extendible hashing plus a linked list for provide a combination of expandibility, fast access, and LRU behavior. See Github #1887 for more information.
- [Enhancement] Provide .rc fields for S3 authentication: HTTP.S3.ACCESSID and HTTP.S3.SECRETKEY.
- [Enhancement] Give the client control over what parts of a DAP2 URL are URL encoded (i.e. %xx). This is to support the different decoding rules that servers apply to incoming URLS. See Github #1884 for more information.
- [Bug Fix] Fix incorrect time offsets from
ncdump -t, in some cases when the timeunitsattribute contains both a non-zero time-of-day, and a time zone suffix containing the letter "T", such as "UTC". See Github #1866 for more information. - [Bug Fix] Cleanup the NCZarr S3 build options. See Github #1869 for more information.
- [Bug Fix] Support aligned access for selected ARM processors. See Github #1871 for more information.
- [Documentation] Migrated the documents in the NUG/ directory to the dedicated NUG repository found at https://github.com/Unidata/netcdf
- [Bug Fix] Revert the internal filter code to simplify it. From the user's point of view, the only visible change should be that (1) the functions that convert text to filter specs have had their signature reverted and renamed and have been moved to netcdf_aux.h, and (2) Some filter API functions now return NC_ENOFILTER when inquiry is made about some filter. Internally, the dispatch table has been modified to get rid of the complex structures.
- [Bug Fix] If the HDF5 byte-range Virtual File Driver is available )HDf5 1.10.6 or later) then use it because it has better performance than the one currently built into the netcdf library.
- [Bug Fix] Fixed byte-range support with cURL > 7.69. See [https://github.com//pull/1798].
- [Enhancement] Added new test for using compression with parallel I/O: nc_test4/tst_h_par_compress.c. See [https://github.com//pull/1784].
- [Bug Fix] Don't return error for extra calls to nc_redef() for netCDF/HDF5 files, unless classic model is in use. See [https://github.com//issues/1779].
- [Enhancement] Added new parallel I/O benchmark program to mimic NOAA UFS data writes, built when --enable-benchmarks is in configure. See [https://github.com//pull/1777].
- [Bug Fix] Now allow szip to be used on variables with unlimited dimension [https://github.com//issues/1774].
- [Enhancement] Add support for cloud storage using a variant of the Zarr storage format. Warning: this feature is highly experimental and is subject to rapid evolution [https://www.unidata.ucar.edu/blogs/developer/en/entry/overview-of-zarr-support-in].
- [Bug Fix] Fix nccopy to properly set default chunking parameters when not otherwise specified. This can significantly improve performance in selected cases. Note that if seeing slow performance with nccopy, then, as a work-around, specifically set the chunking parameters. [https://github.com//issues/1763].
- [Bug Fix] Fix some protocol bugs/differences between the netcdf-c library and the OPeNDAP Hyrax server. Also cleanup checksum handling [https://github.com//issues/1712].* [Bug Fix] IMPORTANT: Ncgen was not properly handling large
data sections. The problem manifests as incorrect ordering of
data in the created file. Aside from examining the file with
ncdump, the error can be detected by running ncgen with the -lc
flag (to produce a C file). Examine the file to see if any
variable is written in pieces as opposed to a single call to
nc_put_vara. If multiple calls to nc_put_vara are used to write
a variable, then it is probable that the data order is
incorrect. Such multiple writes can occur for large variables
and especially when one of the dimensions is unlimited. - [Bug Fix] Add necessary __declspec declarations to allow compilation
of netcdf library without causing errors or (_declspec related)
warnings [https://github.com//issues/1725]. - [Enhancement] When a filter is applied twice with different
parameters, then the second set is used for writing the dataset
[https://github.com//issues/1713]. - [Bug Fix] Now larger cache settings are used for sequential HDF5 file creates/opens on parallel I/O capable builds; see Github #1716 for more information.
- [Bug Fix] Add functions to libdispatch/dnotnc4.c to support
dispatch table operations that should work for any dispatch
table, even if they do not do anything; functions such as
nc_inq_var_filter [https://github.com//issues/1693]. - [Bug Fix] Fixed a scalar annotation error when scalar == 0; see Github #1707 for more information.
- [Bug Fix] Use proper CURLOPT values for VERIFYHOST and VERIFYPEER; the semantics for VERIFYHOST in particular changed. Documented in NUG/DAP2.md. See [https://github.com//issues/1684].
- [Bug Fix][cmake] Correct an issue with parallel filter test logic in CMake-based builds.
- [Bug Fix] Now allow nc_inq_var_deflate()/nc_inq_var_szip() to be called for all formats, not just HDF5. Non-HDF5 files return NC_NOERR and report no compression in use. This reverts behavior that was changed in the 4.7.4 release. See [https://github.com//issues/1691].
- [Bug Fix] Compiling on a big-endian machine exposes some missing forward delcarations in dfilter.c.
Assets
2
- [Windows] Bumped packaged HDF5 to 1.10.6, HDF4 to 4.2.14, and libcurl to 7.60.0.
- [Enhancement] Support has been added for HDF5-1.12.0. See [https://github.com//issues/1528].
- [Bug Fix] Correct behavior for the command line utilities when directly accessing a directory using utf8 characters. See Github #1669, Github #1668 and Github #1666 for more information.
- [Bug Fix] Attempts to set filters or chunked storage on scalar vars will now return NC_EINVAL. Scalar vars cannot be chunked, and only chunked vars can have filters. Previously the library ignored these attempts, and always storing scalars as contiguous storage. See [https://github.com//issues/1644].
- [Enhancement] Support has been added for multiple filters per variable. See [https://github.com//issues/1584].
- [Enhancement] Now nc_inq_var_szip retuns 0 for parameter values if szip is not in use for var. See [https://github.com//issues/1618].
- [Enhancement] Now allow parallel I/O with filters, for HDF5-1.10.3 and later. See [https://github.com//issues/1473].
- [Enhancement] Increased default size of cache buffer to 16 MB, from 4 MB. Increased number of slots to 4133. See [https://github.com//issues/1541].
- [Enhancement] Allow zlib compression to be used with parallel I/O writes, if HDF5 version is 1.10.3 or greater. See [https://github.com//issues/1580].
- [Enhancement] Restore use of szip compression when writing data (including writing in parallel if HDF5 version is 1.10.3 or greater). See [https://github.com//issues/1546].
- [Enhancement] Enable use of compact storage option for small vars in netCDF/HDF5 files. See [https://github.com//issues/1570].
- [Enhancement] Updated benchmarking program bm_file.c to better handle very large files. See [https://github.com//issues/1555].
- [Enhancement] Added version number to dispatch table, and now check version with nc_def_user_format(). See [https://github.com//issues/1599].
- [Bug Fix] Fixed user setting of MPI launcher for parallel I/O HDF5 test in h5_test. See [https://github.com//issues/1626].
- [Bug Fix] Fixed problem of growing memory when netCDF-4 files were opened and closed. See [https://github.com//issues/1575 and https://github.com//issues/1571].
- [Enhancement] Increased size of maximum allowed name in HDF4 files to NC_MAX_NAME. See [https://github.com//issues/1631].
Assets
2
- [Bug Fix]Fixed an issue where installs from tarballs will not properly compile in parallel environments.
- [Bug Fix] Library was modified so that rewriting the same attribute happens without deleting the attribute, to avoid a limit on how many times this may be done in HDF5. This fix was thought to be in 4.6.2 but was not. See [https://github.com//issues/350].
- [Enhancement] Add a dispatch version number to netcdf_meta.h and libnetcdf.settings, in case we decide to change dispatch table in future. See [https://github.com//issues/1469].
- [Bug Fix] Now testing that endianness can only be set on atomic ints and floats. See [https://github.com//issues/1479].
- [Bug Fix] Fix for subtle error involving var and unlimited dim of the same name, but unrelated, in netCDF-4. See [https://github.com//issues/1496].
- [Enhancement] Update for attribute documentation. See [https://github.com//issues/1512].
- [Bug Fix][Enhancement] Corrected assignment of anonymous (a.k.a. phony) dimensions in an HDF5 file. Now when a dataset uses multiple dimensions of the same size, netcdf assumes they are different dimensions. See GitHub #1484 for more information.
Assets
2
- [OSX][Bug Fix][Enhancement] Corrected an issue where protected memory was being written to with some pointer slight-of-hand. This has been in the code for a while, but appears to be caught by the compiler on OSX, under circumstances yet to be completely nailed down. See GitHub #1486 for more information.
- [Enhancement] [Parallel IO] Added support for parallel functions in MSVC. See Github #1492 for more information.
- [Enhancement] Added a function for changing the ncid of an open file. This function should only be used if you know what you are doing, and is meant to be used primarily with PIO integration. See GitHub #1483 and GitHub #1487 for more information.
- [Bug Fix][Enhancement] Various bug fixes and enhancements.
Assets
2
-
[Enhancement] Added unit_test directory, which contains unit tests
for the libdispatch and libsrc4 code (and any other directories that
want to put unit tests there). Use --disable-unit-tests to run without
unit tests (ex. for code coverage analysis).
See GitHub #1458 -
[Bug Fix] Remove obsolete _CRAYMPP and LOCKNUMREC macros from
code. Also brought documentation up to date in man page. These macros
were used in ancient times, before modern parallel I/O systems were
developed. Programmers interested in parallel I/O should see
nc_open_par() and nc_create_par().
See GitHub #1459 -
[Enhancement] Remove obsolete and deprecated functions
nc_set_base_pe() and nc_inq_base_pe() from the dispatch table. (Both
functions are still supported in the library, this is an internal
change only.)
See GitHub #1468 -
[Bug Fix] Reverted nccopy behavior so that if no -c parameters
are given, then any default chunking is left to the netcdf-c library
to decide.
See GitHub #1436 -
Various other bugfixes and enhancements.
Assets
2
The changes from 4.6.3 include but are not limited to:
-
[Enhancement] A plethora of bug fixes and performance improvements.
-
[Enhancement] Updated behavior of
pkgconfigandnc-configto allow the use of the--staticflags, e.g.nc-config --libs --static, which will show information for linking againstlibnetcdfstatically. See Github #1360 and Github #1257 for more information. -
[Enhancement] Provide byte-range reading of remote datasets. This allows
read-only access to, for example, Amazon S3 objects and also Thredds Server
datasets via the HTTPService access method.
See GitHub #1251. -
Update the license from the home-brewed NetCDF license to the standard 3-Clause BSD License. This change does not result in any new restrictions; it is merely the adoption of a standard, well-known and well-understood license in place of the historic NetCDF license written at Unidata. This is part of a broader push by Unidata to adopt modern, standardized licensing.
Assets
2
The changes from 4.6.2 include but are not limited to:
- [Bug Fix] Correctly generated
netcdf.pcgenerated either byconfigureorcmake. If linking against a static netcdf, you would need to pass the--staticargument topkg-configin order to list all of the downstream dependencies. See Github #1324 for more information. - Now always write hidden coordinates attribute, which allows faster file opens when present. See Github #1262 for more information.
- Some fixes for rename, including fix for renumbering of varids after a rename (#1307), renaming var to dim without coordinate var. See Github #1297.
- Fix of NULL parameter causing segfaults in put_vars functions. See Github #1265 for more information.
- Fix of --enable-benchmark benchmark tests Github #1211
- Update the license from the home-brewed NetCDF license to the standard 3-Clause BSD License. This change does not result in any new restrictions; it is merely the adoption of a standard, well-known and well-understood license in place of the historic NetCDF license written at Unidata. This is part of a broader push by Unidata to adopt modern, standardized licensing.
- [BugFix] Corrected DAP-releated issues on big-endian machines. See Github #1321, Github #1302 for more information.
- [BugFix][Enhancement] Various and sundry bugfixes and performance enhancements, thanks to @edhartnett, @gsjaardema, @t-b, @wkliao, and all of our other contributors.
- [Enhancement] Extended
nccopy -Fsyntax to support multiple variables with a single invocation. See Github #1311 for more information. - [BugFix] Corrected an issue where DAP2 was incorrectly converting signed bytes, resulting in an erroneous error message under some circumstances. See GitHub #1317 for more information. See Github #1319 for related information.
- [BugFix][Enhancement] Modified
nccopyso that_NCPropertiesis not copied over verbatim but is instead generated based on the version oflibnetcdfused when copying the file. Additionally,_NCPropertiesare displayed if/when associated with a netcdf3 file, now. See GitHub #803 for more information.
Assets
2
The changes from version 4.6.1 include (but are not limited to):
- [Enhancement] Lazy att read - only read atts when user requests one of them. See GitHub #857.
- [Enhancement] Fast global att read - when global atts are read, they are read much more quickly. See GitHub #857.
- [Enhancement] Add nccopy command options for per-variable chunk sizing, and minimum chunk size. See GitHub #1087.
- [Bug Fix] Fix nccopy handling of user specified chunk sizes. See GitHub #725,#1087.
- [Bug Fix] Avoid limit on number of times a netCDF4 attribute can be updated. Not a complete fix for the HDF5 "maximum creation order" problem, but should greatly reduce occurrences in many real-world cases. See GitHub #350.
- [Bug Fix] The use of NC_DISKLESS has been modified to make it cleaner. This adds a new flag called NC_PERSIST that takes over the now obsolete NC_MPIPOSIX.
- [Obsolete] Obsolete the MPIPOSIX flag.
- [Bug Fix] When using filters with HDF5 1.10.x or later, it is necessary to utilize the HDF5 replacements for malloc, realloc, and free in the filter code.
- [Enhancement] Create a new version of _NCProperties provenance attribute. This version (version 2) supports arbitrary key-value pairs. It is the default when new files are created. Version 1 continues to be accepted.
- [Enhancement] Allow user to set http read buffersize for DAP2 and DAP4 using the tag HTTP.READ.BUFFERSIZE in the .daprc file.
- [Enhancement] Allow user to set http keepalive for DAP2 and DAP4 using the tag HTTP.KEEPALIVE in the .daprc file (see the OPeNDAP documentation for details).
- [Enhancement] Support DAP4 remote tests using a new remote test server locatedon the Unidata JetStream project.
- [Enhancement] Improved the performance of the nc_get/put_vars operations by using the equivalent slab capabilities of hdf5. Result is a significant speedup of these operations. See GitHub #1001 for more information.
- [Enhancement] Expanded the capabilities of
NC_INMEMORYto support writing and accessing the final modified memory. See GitHub #879 for more information. - [Enhancement] Made CDF5 support enabled by default. See Github #931 for more information.
- [Bug Fix] Corrected a number of memory issues identified in
ncgen. See GitHub #558 for more information.
Assets
2
The changes from the pervious version include (but are not limited to):
- [Enhancement] Add nccopy command options for per-variable chunk sizing, and minimum chunk size. See GitHub #1087.
- [Bug Fix] Fix nccopy handling of user specified chunk sizes. See GitHub #725,#1087.
- [Bug Fix] Avoid limit on number of times a netCDF4 attribute can be updated. Not a complete fix for the HDF5 "maximum creation order" problem, but should greatly reduce occurrences in many real-world cases. See GitHub #350.
- [Bug Fix] The use of NC_DISKLESS has been modified to make it cleaner. This adds a new flag called NC_PERSIST that takes over the now obsolete NC_MPIPOSIX.
- [Obsolete] Obsolete the MPIPOSIX flag.
- [Bug Fix] When using filters with HDF5 1.10.x or later, it is necessary to utilize the HDF5 replacements for malloc, realloc, and free in the filter code.