/-----------------------------------/ / CDF V3.8.1.0 Release Notes / /-----------------------------------/ 1. Compatibility with all CDF 3.*, 2.7.6 and earlier versions CDF V3.8.1 is backward compatible with the previous versions of CDF, and it can read CDF files that were created with earlier versions. If a file was created with CDF 2.7 and read and modified by CDF 3.*, the resultant file will be saved in the CDF 2.7 format, not CDF 3.*. The same principle applies to files that were created with CDF 2.5 and 2.6. CDF files that are created from scratch with CDF V3.7.1 are compatible in file structure with all CDF 3.*, but not compatible (due to a 64-bit file offsets used since CDF 3.0 versions) with CDF 2.7.2 or earlier, and an attempt to read CDF 3.* files from CDF 2.7.2 or earlier will produce an error. Since a couple of new data types were added in V3.4, applications based on V3.3.* and earlier will not be able access the V3.4 and later files if the files have the data of those new types. However, if the files of V3.4 and later do not contain data of the new data types, V3.*-based applications should have no problems accessing them. Users of CDF 3.0 or later versions will be able to create CDF files that can be read by CDF 2.7.2 or earlier by using the CDFsetFileBackward function (in C) or CDF_set_FileBackward subroutine (in Fortran), or using the CDF_FILEBACKWARD environment variable on Unix/Linux (including Mac OS X) or PC, or CDF$FILEBACKWARD on OpenVMS. See Section 4.18 of the CDF C Reference Manual and the CDF Fortran Reference Manual for details on how to create CDF 2.7-compatible files. Note: There are a few new data types that are only available in Version 3.1 and later, which can not be used in Version 2.*. All features added to the previous releases are included. Refer to the release notes from the previous versions to view the specific features pertaining to that release. 2. Changes The following changes have been made/added in V3.8.1.* and prior versions: * Added support for ARM processor for Apple iOS (silicone) and other platforms. * The dynamic memory is no longer placed into a linked list. * Added a couple of attribute entry read/write functions for string in expanded standard interface. * Allowed characters in UTF-8 encoding to be handled by the CDF. * Allowed building fat JNI library from the main CDF build. * Modified TT2000 type handling routine in C/Java to accept reverse leap second (no 59 second) in the future. * Added Json-CDF converters in Java package. * Enhanced netCDF-to-CDF converter. * Added a set of quick read functions/methods: READCDF and READVARIABLE, to Java, Perl, C# and IDL interface to read CDF/Variable information in a single call. * Modified the CDF epoch breakdown functions that might cause incorrect day being returned. * Added a new option "-advformat" to tool program skeletontable to manage how FORMAT attribute is used to encode the data and metadata. This option will show data with more precision in the skeleton table. * Modified code to use FILLVAL to fill the missing data if it exists, instead of the pad value. * String typed variable's pad value will only hold a single space and then followed by NULs, instead of all spaces (for the number of elements). * Modified skeletoncdf program to handle skeleton table with hidden character carriage-return (\r) made from Windows. * Added a few features to cdfconvert tool program. * Added a few features to cdfconvert tool program. * Modified skt2cdf to allow processing a skeleton table made in Windows * to be used on non-Windows systems. * Upgrade the zlib package to V2.1.11, which has code improvements and bug * fixed. * Added a set of time conversion functions between CDF_EPOCH, CDF_EPOCH16 and CDF_TIME_TT2000 time and unix time. * Added a new, general set of epoch encoding (toEncodexxxx) and parsing toParsexxxx functions (where xxxx is EPOCH, EPOCH16 or TT2000) for each of the CDF epoch data type. * Expanded the CDF XML schema and allowed special characters used in name. * Encoded CDF epoch data in ISO8601 format, except skeleton table. * Added ARM port. * Added IA64 OpenVMS. * Allowed Nul-terminting string data for attribute and variable data. * Allowed multi-strings for variable attribute entries. * Skip checksum verification if the data validation is turned off. * Added cdfj.jar, the pure Java APIs that can read/write CDFs without needing the CDF library and JNI. * Revised the CDF schema to support new features. * For Unix-based systems, "mkstemp" function is used to create the temporary file in the template form of "mycdftmp.XXXXXX". * For Unix-based systems, if CDF_TEMP is not defined, the temporary files are created on the current directory (pwd), if it is writable. Otherwise, environment variable: TMPDIR is used if it is defined. Otherwise, /tmp directory is used. * If adding data to a master file to create a new CDF, the leap second last updated header field is updated with the information from the leap second table if the data is of TT2000 data type. * Added a new leap second for 1/1/2017. * Added a new set of CDFread functions that will allocate the needed space for the user. It is user's responsiblility to free the space after use. * New features were added in the cdfconvert, cdfdump tool programs. * Modified library to space(s) filled string data that has a shorter length than the defined (number of elements) while reading/writing. * Modified Makefile and installation for Mac OS X El Captain (10.11). * Used the preserved system temporary folder, e.g., /tmp for Linux/Unix/MacOSX, to hold the temporary file(s). * Set temporary file name using the random number generator with process id and current time as the seed. * Added support for computing TT2000 from UTC if the passed day is DOY (day of the year from January 1st). * Added a few options to cdfconvert tool program. * Added a new leap second for 2015-07-01 to the leap second table. * Added a new field "leapsecondlastupdated" in a CDF's GDR. This records the leap second table a CDF is based upon. A set of read/write/validate functions for the field is added to the library. * Added a new record delete option in the library, which will rearrange remaining records for sparse record variables. * Skipped checking the given CDF file name for ASCII for reading. Only enforce the file name to be ASCII, but not the directory portion, if provided, for creating a CDF. * Tool cdfconvert has a new option to sort the keyed variable, e.g., Epoch, for the output file. * Tool cdfconvert has a new option to validate a CDF, including the variable data. * A few bugs were fixed. * Rename all CDF distributed MATLAB modules, prefixing each with "spdf", to differentiate them with the ones come from MATLAB. Please refer to CHANGES.txt for the detailed code changes in various versions. 3. How to Obtain the Latest Software Go to the CDF home page (http://cdf.gsfc.nasa.gov) and click the Download CDF Software link. 4. Documentation The CDF documentation set consists of the following: cdf381ug.pdf (CDF User's Guide) cdf381crm.pdf (CDF C Reference Manual) cdf381frm.pdf (CDF Fortran Reference Manual) cdf381prm.pdf (CDF Perl Reference Manual) cdf381jrm.pdf (CDF Java Reference Manual) cdf381csrm.pdf (CDF C# Reference Manual) cdf381vbrm.pdf (CDF Visual Basic Reference Manual) cdf38ifd.pdf (CDF Internal Format Description) These documents are available from the CDF home page (http://cdf.gsfc.nasa.gov). We have a user support office for CDF that you can contact when you need an assistance. For requests, please send emails to: Internet -- NASA-CDF-Support@nasa.onmicrosoft.com Please let us know (via an email to CDFSUPPORT) if you get the distribution. We would like to know who has the distribution so we know who to contact when updates are available. CDFsupport