Release Notes for OPeNDAP/DODS C++ 3.4 Release Candidate 5 13 October 2003 Release candidates are not considered stable releases. Please treat it accordingly (e.g., not installing as your operational system, expect some bugs and report any you find). New features and major bug fixes are listed below. Complete documentation of the DODS system can be found on the DODS home page: http://unidata.ucar.edu/packages/dods ------------------------------------------------------------------------ NEW FEATURES (detail follows) Code changes 1. Using libcurl instead of libwww. 2. URL dereferencing done with curl instead of Perl. 3. C++ DAP is now thread-safe. 4. New interface for DAS and DDS classes. 5. Core compiles with gcc 3.2.1, Visual C++ 6.0 and gcc 2.95. 6. Bug fixes 6a. Server and client code can once again deal with compressed responses. 6b. Rolled new netCDF fix into nc-dods. This fixes an issue with performance seen with data on NFS mounted disks. 6c. Fixed some cacheing bugs. 6d. Added the methods Float32::value() and Float64::value(). 6e. fixed bugs in HTTPConnect. 6f. Change aclocal.m4 to detect multiple version of matlab or idl lib due to different architecture. 6g. Added some missing nc FORTRAN wrapper. Client usage changes 7. Passwords can be included in URLs. 8. Digest authentication is now supported. 8a. Client-side caching is off by default, but old .dodsrc files may have it _on_ by default. Server usage changes 9. dods.rc 10. A smart time-out capability has been added to the servers. 11. statistics New software 12. OPeNDAP AIS prototype is available 13. netCDF client and server upgraded 14. DODSter module added to emulate the MODster software. Server usage notes 15. Compression and caching decompressed files. 16. Register your data set(s). 17. Prettifying the DODS Directory response. ------------------------------------------------------------------------ CODE CHANGES 1. The DODS core now links to libcurl instead of libwww for WWW functions. The libcurl library is smaller than libwww, is being actively developed, and is MT-safe. 2. The server dispatch scripts no longer use the Perl HTTP, MIME and LWP classes. Instead, URL dereferencing is done with curl, a freestanding binary that is part of the libcurl build. 3. The core software is now multi-thread safe. 4. The interface to several important classes has been augmented. The DAS and DDS classes have a new set of interfaces so that STL iterators can be used to manipulate their contents. The Old Pix interfaces are still present, although uses of Pix that rely on those objects being void pointers may fail in certain circumstances. To write out the names of all the variables in a DDS, you would use Pix code like this: for (Pix p = dds.first_var(); p; dds.next_var(p)) { cout << dds.var(p)->name() << endl; } Using the STL for the same purpose, you would do this: for (DDS::Vars_iter i = dds.begin_var(); 1 != dds.end_var(); ++i) { cout << (*i)->name() << endl; } There have also been some additions to the DAS, DDS and AttrTable that make it easier for non-C++ programs to traverse those containers. For example, in the DDS class, we have the new method: Vars_iter get_vars_iter(int i); In AttrTable we have: Attr_iter get_attr_iter(int i); Both of these make it possible to access members of the DDS and DAS containers from C code using a simple integer index. This is important because C programs cannot create the fancy STL iterator objects. (They can fake a Pix pointer, but this leads to problems and should not be done.) 5. The C++ DAP now builds with gcc 3.2.1, in addition to gcc 2.95 and Visual C++ 6.0. These are the compiler versions that have been tested. Other versions may also work. Other compilers may also work as long as they support the STL (Standard Template Library). 6. Server bug fixes have included fixes to Sequence constraint behavior, the Grid constraint expression function, and memory leaks. The grid() server-side function is now part of all servers. Suppose you have a Grid variable SST that looks like: Grid { Array: Byte SST[lat=1024][lon=1024]; Maps: Float64 lat[1024]; Float64 lon[1024]; } SST; You can use the following constraints: ?grid(SST,"lat>10.0","lat<20.0") Returns the part where "lat" is between 10.0 and 20.0. All the "lon" values are returned. ?grid(SST,"10.0 Options +Indexes +FollowSymLinks IndexOptions FancyIndexing IndexOptions +FoldersFirst +NameWidth=* +IgnoreCase IndexOptions +SuppressDescription DefaultIcon /path-to-icons/dods.gif IndexOptions +IconHeight=20 +IconWidth=20 I copied the DODS logo from upper left hand corner of http://www.unidata.ucar.edu/packages/dods/home/getStarted/ called it dods.gif and stuck it in my apache icons directory (in httpd.conf grep for Icon - something should show you the path) Information for Apache IndexOptions: http://httpd.apache.org/docs/mod/mod_autoindex.html#indexoptions Options: http://httpd.apache.org/docs/mod/core.html#options DefaultIcon: http://httpd.apache.org/docs/mod/mod_autoindex.html#defaulticon ------------------------------------------------------------------------ $Id: NEWS,v 1.2.4.9 2003/12/02 17:08:19 edavis Exp $