$Id: release-3.4.txt,v 1.4 2003/06/20 02:29:26 tom Exp $ OPeNDAP/DODS C++ 3.4 Release Candidate 1 (Beta) is now available. 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). Here is what's new in the OPeNDAP/DODS C++ core version 3.4: Code changes 1. 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 Client usage changes 7. Passwords can be included in URLs. Server usage changes 8. dods.rc 9. statistics New software 10. OPeNDAP AIS prototype is available 11. netCDF client and server upgraded 12. DODSter module added to emulate the MODster software. CODE CHANGES 1. The DODS core now links to libcurl instead of libwww for WWW functions. The libcurl library is smaller than libwww, and is being actively developed. 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