Blame NEWS

Packit a4aae4
News for version 3.19.1
Packit a4aae4
Packit a4aae4
Portability issues: Updated gnulib and mkstemps fixed as per user
Packit a4aae4
reports. Removed a test for block_size in HTTPCacheTest that failed on
Packit a4aae4
Fedora ppc64le system with XFS system
Packit a4aae4
Packit a4aae4
Branches/tickets merged: hyrax390 (CppUnit test improvements)
Packit a4aae4
Packit a4aae4
News for version 3.19.0
Packit a4aae4
Packit a4aae4
Bug fixes in memory usage for Vector types.
Packit a4aae4
Packit a4aae4
Refactored transform_to_dap4() methods and associated API
Packit a4aae4
Packit a4aae4
Implmented transform_to_dap2() method.
Packit a4aae4
Packit a4aae4
Refactored test harnesses so that running individual 
Packit a4aae4
tests is now a viable option.
Packit a4aae4
Packit a4aae4
News for version 3.18.3
Packit a4aae4
Packit a4aae4
Bug fix for DAP4 data transmissions.
Packit a4aae4
Packit a4aae4
XML Parser fixes for DAP4: We are now tolerant of elements that
Packit a4aae4
are not in the DAP4 namespace, so the DMR document can be extended
Packit a4aae4
with additional information without breaking our parser.
Packit a4aae4
Packit a4aae4
D4Group's clone (aka ptr_duplicate) method returned a D4Group and not
Packit a4aae4
a BaseType; fixed.
Packit a4aae4
Packit a4aae4
News for version 3.18.2
Packit a4aae4
Packit a4aae4
Fixed an issue with DAP4 CE parsing, double quotes and %20 escape
Packit a4aae4
characters.
Packit a4aae4
Packit a4aae4
Type fix for getopt() for platforms where char is unsigned by default.
Packit a4aae4
Packit a4aae4
Added more bigendian test baselines.
Packit a4aae4
Packit a4aae4
Added libuuid to the requirements listed in INSTALL.
Packit a4aae4
Packit a4aae4
News for version 3.18.1
Packit a4aae4
Packit a4aae4
Minor fix for the source distribution.
Packit a4aae4
Packit a4aae4
Fixed a long-standing bug in BaseType::set_send_p() and set_read_p().
Packit a4aae4
Packit a4aae4
Added a way to build 'universal' baselines for tests that include
Packit a4aae4
data. Tests that included data had different checksums on different
Packit a4aae4
architectures and this meant two sets of baselines for them. No more.
Packit a4aae4
I'm keeping the old tests with their dual baselines (they test the
Packit a4aae4
checksum code) but all newer tests should use the 'universal' test
Packit a4aae4
macros.
Packit a4aae4
Packit a4aae4
Added DAP4 filter support!
Packit a4aae4
Packit a4aae4
News for version 3.17.3
Packit a4aae4
Packit a4aae4
Fixed a soname error - Adding a const constructor seems to have
Packit a4aae4
*removed* the old constructor as far as some code is cncerned (it's
Packit a4aae4
still there, but with a different mangled name).
Packit a4aae4
Packit a4aae4
News for version 3.17.2
Packit a4aae4
Packit a4aae4
Added tests for big-endian machines from Dan HorĂ¡k  <dan@danny.cz>
Packit a4aae4
Packit a4aae4
News for version 3.17.1
Packit a4aae4
Packit a4aae4
A bug fix release. 
Packit a4aae4
Packit a4aae4
Fix for endian detection issues and unqualified use of 'array' (it
Packit a4aae4
should have been libdap::array). The latter affects builds with 
Packit a4aae4
recent versions of gcc.
Packit a4aae4
Packit a4aae4
See the ChangeLog for other issues that this version addresses.
Packit a4aae4
Packit a4aae4
News for version 3.17.0
Packit a4aae4
Packit a4aae4
Better error reporting. Error objects are now always thrown with a
Packit a4aae4
code that 'make sense' and use the default code only when really
Packit a4aae4
necessary. This means that the BES will not report most Error throws
Packit a4aae4
as an internal error (only a few are) unless that's really the case.
Packit a4aae4
This is used, in turn, by the front end to make better error responses
Packit a4aae4
for users.
Packit a4aae4
Packit a4aae4
The old timeout code is still present but not used. This matches 
Packit a4aae4
changes made in the BES to correctly process timeouts.
Packit a4aae4
Packit a4aae4
Improved support for doxygen.
Packit a4aae4
Packit a4aae4
Support for DAP4: Attributes were sometimes mis-coded as Byte when
Packit a4aae4
they should have been Float32. Fixed.
Packit a4aae4
Packit a4aae4
Child Groups were sometimes printed twice. No more.
Packit a4aae4
Packit a4aae4
News for version 3.16.0
Packit a4aae4
Packit a4aae4
I've bumped up the version because of an API change in libdap - the 
Packit a4aae4
library no longer computes the DAP4 CRC32 checksum as part of the 
Packit a4aae4
BaseType::intern_data() method. This API change affects DAP4 only. 
Packit a4aae4
Otherwise, this is a bug-fix release for 3.15.1
Packit a4aae4
Packit a4aae4
Bugs fixed:
Packit a4aae4
Packit a4aae4
getdap4 correctly produces output for dataset with child groups.
Packit a4aae4
Packit a4aae4
Tests now work correctly for big-endian machines - before the DMR tests
Packit a4aae4
were failing because the CRC32 codes are different for the same, e.g.,
Packit a4aae4
int32 value, with different byte order. Not addressed are the issues 
Packit a4aae4
of how best to encode the byte order used when CRC32 computations are
Packit a4aae4
done. Thanks to the folks at RedHat for help (a VM) to work on this.
Packit a4aae4
Packit a4aae4
News for version 3.15.1
Packit a4aae4
Packit a4aae4
Bug fixes
Packit a4aae4
Packit a4aae4
News for version 3.15.0
Packit a4aae4
Packit a4aae4
The library now writes to the network using a child thread, allowing 
Packit a4aae4
parallel processing of data reads and writes when one or more variables
Packit a4aae4
are returned (or when returning the result of an aggregation).
Packit a4aae4
Packit a4aae4
The library now supports writing 'vector' data (i.e., Array variables)
Packit a4aae4
in parts so that large arrays that are being built up over time can be
Packit a4aae4
serialized in pieces as the data becomes available. This is combined
Packit a4aae4
with the parallel I/O feature when serializing aggregations - other
Packit a4aae4
handlers could also take advantage of it
Packit a4aae4
Packit a4aae4
We fixed an issue in Vector where template methods were used in a way
Packit a4aae4
that broke inheritance, introducing a hard-to-diagnose bug in the NCML 
Packit a4aae4
code. The problem was that variables that describe the 'aggregation 
Packit a4aae4
dimension' could not be subset. That's now fixed.
Packit a4aae4
Packit a4aae4
News for version 3.14.2
Packit a4aae4
Packit a4aae4
This version of the library _changes the behavior of BaseType::serialize()_
Packit a4aae4
so that memory allocated on the heap used to hold data (e.g., for an 
Packit a4aae4
Array) will be deleted as soon as the data are serialized. This was added
Packit a4aae4
to reduce memory consumption when returning responses with many large 
Packit a4aae4
variables. The change did not affect any of the code we normally test
Packit a4aae4
against; I think it was a largely undocumented 'feature' that the data
Packit a4aae4
were still present after serialized returned. However, if a module needs
Packit a4aae4
the data after serialize() is called, it can use a new method called
Packit a4aae4
serialize_no_release() to get the old behavior.
Packit a4aae4
Packit a4aae4
News for version 3.14.1
Packit a4aae4
Packit a4aae4
We started using Travis-CI and Coverity for/with/on this code; there was
Packit a4aae4
a learning curve... ;-) Also some issues with the parsers have been 
Packit a4aae4
addressed, hopefully resulting in more straightforward builds.
Packit a4aae4
Packit a4aae4
News for version 3.14.0
Packit a4aae4
Packit a4aae4
This version of libdap contains the current DAP4 implementation for 
Packit a4aae4
C++. The implementation is nearly complete, lacking only the CE filters
Packit a4aae4
for Sequences.
Packit a4aae4
Packit a4aae4
News for version 3.13.3
Packit a4aae4
Packit a4aae4
Memory leak fix in RValue.cc - affects server function evaluation only.
Packit a4aae4
Packit a4aae4
News for version 3.13.2
Packit a4aae4
Packit a4aae4
Fixed a memory leak in the CE parser when evaluating server functions.
Packit a4aae4
Packit a4aae4
News for version 3.13.1
Packit a4aae4
Packit a4aae4
Fix for a unit-test that uses the default server at test.opendap.org. 
Packit a4aae4
This affects neither the API nor ABI of libdap; only the test baseline
Packit a4aae4
was changed.
Packit a4aae4
Packit a4aae4
News for version 3.13.0
Packit a4aae4
Packit a4aae4
Added a xml file to serve as input for the perl-based abi compatibility 
Packit a4aae4
checker. Seems to be pretty slick; see abi-checker.xml.in for more info.
Packit a4aae4
Packit a4aae4
Some updates - mostly addition of #include <unistd.h> - for OSX 10.9's
Packit a4aae4
clang compiler.
Packit a4aae4
Packit a4aae4
News for version 3.12.1
Packit a4aae4
Packit a4aae4
Fixed the behavior of Sequence::read_row() so that the documented
Packit a4aae4
semantics of read() are used. This will require changes in some of the
Packit a4aae4
handlers but does not change the libray's ABI. Handler's that don't
Packit a4aae4
need the new/corrected behavior can use version 3.12.0.
Packit a4aae4
Packit a4aae4
News for version 3.12.0
Packit a4aae4
Packit a4aae4
Moved server functions out of libdap; they are now stored in a BES module.
Packit a4aae4
Packit a4aae4
Added support for building large (constant) arrays to be used in
Packit a4aae4
server functions. The arrays are defined using a new special form that
Packit a4aae4
the ConstraintEvaluator class supports. The server side functions are
Packit a4aae4
now in their own BES module (built as part of the BES for now) and
Packit a4aae4
it's possible to name the constant arrays. Arrays of 1 million
Packit a4aae4
elements can be made in a fraction of a second (although it will take
Packit a4aae4
longer to send the constraint to the server). See the README file for
Packit a4aae4
more details.
Packit a4aae4
Packit a4aae4
News for version 3.11.7
Packit a4aae4
Packit a4aae4
Bug fix for the server function caching code. Now if the function
Packit a4aae4
cache directory /tmp/dap_functions_cache exists, it will be used to 
Packit a4aae4
cache the results of applying server functions. If the directory does
Packit a4aae4
not exist, then the function results won't be cached - a minor 
Packit a4aae4
performance penalty in most cases. 
Packit a4aae4
Packit a4aae4
The size of the cache is set to 20GB. The size and location of the 
Packit a4aae4
cache are fixed for this version of libdap but they will move into
Packit a4aae4
the bes.conf file as parameters in a future version of the server.
Packit a4aae4
Packit a4aae4
News for version 3.11.6
Packit a4aae4
Packit a4aae4
Changes to the way constraints are evaluated when they contain server
Packit a4aae4
functions. Now DAS and DDS objects can be returned from requests that
Packit a4aae4
include those constraints. The server function call results are
Packit a4aae4
cached, so that sending the same function calls several times will not
Packit a4aae4
evaluate those functions more than once.
Packit a4aae4
Packit a4aae4
News for version 3.11.5
Packit a4aae4
Packit a4aae4
Fixed a memory leak in XDRStreamMarshaller and a bug in
Packit a4aae4
DDS::add_var_nocopy().
Packit a4aae4
Packit a4aae4
News for version 3.11.4
Packit a4aae4
Packit a4aae4
Merged to trunk; tagged.
Packit a4aae4
Packit a4aae4
News for version 3.11.3
Packit a4aae4
Packit a4aae4
Changed the return value for dap-config --libs so that it does not contain 
Packit a4aae4
the curl static libs. This causes problems when linking on CentOS 6 in some
Packit a4aae4
cases.
Packit a4aae4
Packit a4aae4
News for version 3.11.2
Packit a4aae4
Packit a4aae4
The new DAP3.3 Keywords are supported by the library. These are sort
Packit a4aae4
of a hidden feature of DAP4 that might not be used.
Packit a4aae4
Packit a4aae4
There are many bug fixes in this update; check the ChangeLog or Trac.
Packit a4aae4
Two notable fixes:
Packit a4aae4
Packit a4aae4
* The way attributes are encoded has changed subtly so that now only
Packit a4aae4
  spaces are escaped. This fixes a problem with our XML and RDF
Packit a4aae4
  responses.
Packit a4aae4
Packit a4aae4
* The XML output (i.e., the DDX) is now built using an XML library, so
Packit a4aae4
  any encoding issues are its fault ;-) But, in a pragmatic sense,
Packit a4aae4
  this has greatly simplified the library and sets the stage for
Packit a4aae4
  further simplification of the methods that build responses. The
Packit a4aae4
  behavior of those methods has not changed.
Packit a4aae4
Packit a4aae4
News for version 3.11.1
Packit a4aae4
Packit a4aae4
Merge of the Hyrax 3.6.2 fixes.
Packit a4aae4
Packit a4aae4
A race condition in the HTTP cache was fixed.
Packit a4aae4
Packit a4aae4
Fixes for the OS/X package.
Packit a4aae4
Packit a4aae4
News for version 3.11.0
Packit a4aae4
Packit a4aae4
Constraint expressions can now include multiple function calls.
Packit a4aae4
Previously, when a function was used in the projection part of the CE
Packit a4aae4
and it was not a 'projection function,' but a function that returns
Packit a4aae4
data, only function could be called in the CE. Now the evaluator
Packit a4aae4
supports calling a series of functions. The results are returned in a
Packit a4aae4
Dataset object as before. Because this is a new behavior for the
Packit a4aae4
library I have bumped up the minor revision. This version is backward
Packit a4aae4
compatible with the previous version of the library.
Packit a4aae4
Packit a4aae4
Grid now prints the XML declaration correctly when a constrained Grid
Packit a4aae4
variable's type decays to a Structure. The expr-test program now has
Packit a4aae4
an XML option (-x) for use with constrained DDS/DDX output. This bug
Packit a4aae4
affected the usefulness of the DDX response.
Packit a4aae4
Packit a4aae4
the geogrid() function now takes both (grid, <box points>) and (grid,
Packit a4aae4
lat array, lon array <box points>). This includes some minimal testing
Packit a4aae4
of the new code.
Packit a4aae4
Packit a4aae4
Bug fixes.
Packit a4aae4
Packit a4aae4
News for version 3.10.2
Packit a4aae4
Packit a4aae4
Changed the way the DAS object's attributes are merged into a DDS
Packit a4aae4
object, which did two things. First, the process of merging the
Packit a4aae4
attributes has a default behavior that will work if the DAS and DDS
Packit a4aae4
are built according to the DAP 2.0 specification, and second, the
Packit a4aae4
handlers can specialize the process to suite their own needs. This
Packit a4aae4
means that new handlers that build odd DAS objects will need to
Packit a4aae4
specialize the transfer_attributes() method defined by BaseType,
Packit a4aae4
Constructor and Grid. I've already done this for the current handlers
Packit a4aae4
we're distributing as part of Hyrax. This means that attributes from
Packit a4aae4
the netCDF handler appear correctly in Grid maps.
Packit a4aae4
Packit a4aae4
Speaking of the netCDF handler, it now builds with netcdf 4.1.
Packit a4aae4
Packit a4aae4
Build fixes galore, including new Requires: lines in the rpm spec
Packit a4aae4
files which should make it easier to short circuit installation
Packit a4aae4
problems with the handlers.
Packit a4aae4
Packit a4aae4
The DDX no longer contains attributes with &0xdd; escape codes. When
Packit a4aae4
an XML document declares that it is UTF-8 codes < 0x20 are not
Packit a4aae4
allowed. We're using octal escapes again.
Packit a4aae4
Packit a4aae4
The preceding fix, along with the corrected processing of the DAS
Packit a4aae4
object mean that two major issues with the DDX that hindered the use
Packit a4aae4
of that response in semantic web applications are gone.
Packit a4aae4
Packit a4aae4
News for version 3.10.1b
Packit a4aae4
Packit a4aae4
We have removed the Server 3 (CGI) software from the dap-server
Packit a4aae4
package and, with that change, we have removed the deflate program
Packit a4aae4
from this library/package.
Packit a4aae4
Packit a4aae4
The geogrid() function has been much improved. It will now answer
Packit a4aae4
requests where the latitude is upside down in the dataset and flip the
Packit a4aae4
result so that the north pole is 'up'. It will also handle requests
Packit a4aae4
that 'wrap around' the date line. Error messages are also improved.
Packit a4aae4
Packit a4aae4
This library now implements DAP 3.3 including the OtherXML DAP
Packit a4aae4
attribute type (which will become AnyXML in DAP 4). The library now
Packit a4aae4
implements simple version negotiation and a DDX response that is DAP
Packit a4aae4
version sensitive. See the online DAP4 design documentation for more
Packit a4aae4
information (docs.opendap.org).
Packit a4aae4
Packit a4aae4
Many, many fixes and extensions for DAP4 and NcML support. (NB: the
Packit a4aae4
NcML handler is a separate project).
Packit a4aae4
Packit a4aae4
News for version 3.9.2
Packit a4aae4
Packit a4aae4
Memory leak fixed when using DDS::transfer_attributes on a DAS that uses the
Packit a4aae4
Alias keyword.
Packit a4aae4
Packit a4aae4
News for version 3.9.1
Packit a4aae4
Packit a4aae4
The CE parser now returns an error if an array of structures that contains
Packit a4aae4
arrays is improperly constrained (the enclosing structure array _may_ be
Packit a4aae4
subsampled, but that subsampling must be the same for each of its fields. The
Packit a4aae4
fields can be independently subsampled.
Packit a4aae4
Packit a4aae4
A problem with the client-side cache has been fixed.
Packit a4aae4
Packit a4aae4
Variable names can now be quoted! That is, in a CE you can say:
Packit a4aae4
Packit a4aae4
  "my odd name"."% H2O"[10:13] 
Packit a4aae4
Packit a4aae4
and it will parse. Must clients and all web browsers will encode all of this
Packit a4aae4
using the web's URL escape syntax, which his hard to read, but this means that
Packit a4aae4
any character can now appear in a variable name (double quotes can be escaped
Packit a4aae4
using a backslash and backslashes can be includes using '\\'). The quotes are
Packit a4aae4
optional, of course, so all CEs that work now will continue to work.
Packit a4aae4
Packit a4aae4
News for version 3.9.0
Packit a4aae4
Packit a4aae4
libdap now supports DAP 3.2. The evolving DAP 3.x protocol is described at
Packit a4aae4
http://docs.opendap.org/index.php/DAP3/4. The most important change from DAP
Packit a4aae4
3.1 to 3.2 is:
Packit a4aae4
Packit a4aae4
  DAP 3.2 introduces the notion of protocol negotiation, similar to HTTP's
Packit a4aae4
  response type or encoding negotiation. The client MAY send an XDAP-Accept
Packit a4aae4
  header to tell the server the highest version of the protocol that the
Packit a4aae4
  client can understand. The server MUST then respond using only responses at
Packit a4aae4
  or below that version number of the protocol. Note that an Error response
Packit a4aae4
  (e.g., "The response you requested cannot be returned using the protocol
Packit a4aae4
  version you understand") can be understood by any client. If a client does
Packit a4aae4
  not send the XDAP-Accept header, then the server MUST assume a DAP 2.0/3.1
Packit a4aae4
  client. The only functional difference between DAP 2.0, 3.0 and 3.1 is
Packit a4aae4
  form/content of the version information returned in the HTTP response
Packit a4aae4
  header.
Packit a4aae4
Packit a4aae4
  By allowing the server to respond with a lower version the protocol can
Packit a4aae4
  support old servers (since that's how they will respond) and enable newer
Packit a4aae4
  clients to treat the lower version responses as errors (because the newer
Packit a4aae4
  servers can be expected to discriminate between different server versions).
Packit a4aae4
Packit a4aae4
  New servers SHOULD always return a response that conforms to the version
Packit a4aae4
  sent from the client in the XDAP-Accept header.
Packit a4aae4
Packit a4aae4
  In addition to returning the DAP protocol version using the XDAP header
Packit a4aae4
  (which is a mechanism specific to HTTP), the protocol version will also be
Packit a4aae4
  returned in the DDX Dataset element using the XML attribute dap-version.
Packit a4aae4
  See DDX.
Packit a4aae4
Packit a4aae4
With this version of libdap the DDX is slightly different for DAP 3.2 - it
Packit a4aae4
now includes DAP protocol version information and an xmlbase element.
Packit a4aae4
Packit a4aae4
There was ambiguity regarding how an array of structures would be constrained.
Packit a4aae4
The web page of DAP 2 Errata has been updated with a clarification of this and
Packit a4aae4
the constraint expression parser has been updated to reflect that fix. See
Packit a4aae4
the DAP3/4 page and ticket 975 for the complete info. Short version: Suppose
Packit a4aae4
's' is an array of structures and 'm' is an array that is a member of 's'.
Packit a4aae4
You can constraint 'm' like this: s2[0:4].m[2:7]
Packit a4aae4
Packit a4aae4
Now the notion that a dataset identifier (e.g., a file name) is bound to the
Packit a4aae4
DDS has been  dropped and that identifier is bound to a variable. This lets
Packit a4aae4
the library be used in contexts where a DDS holds variables from several
Packit a4aae4
different places (e.g., files).
Packit a4aae4
Packit a4aae4
String attribute values were always quoted (quotes were added if not present
Packit a4aae4
in the data set) and while this was OK for the DAS response, it broke the
Packit a4aae4
DDX. Now quotes are added to DAS response but not the values themselves. See
Packit a4aae4
ticket 1163.
Packit a4aae4
Packit a4aae4
Nested Sequences were failing when the constraint forced one or more rows of
Packit a4aae4
the inner Sequence to be empty. Fixed.
Packit a4aae4
Packit a4aae4
A number of build issues have been fixed in this version, see the ChangeLog
Packit a4aae4
file.
Packit a4aae4
Packit a4aae4
News for version 3.8.2
Packit a4aae4
Packit a4aae4
Significant improvements to the HTTP cache. The cache software could return
Packit a4aae4
erroneous responses in some rare cases when using multi-threaded code. Fixed.
Packit a4aae4
Also the entire caching system is now much more robust since the 'table' that
Packit a4aae4
contains information about individual entries is encapsulated in it's own
Packit a4aae4
class. The HTTP cache is still both thread-safe and _not_ multi-process safe.
Packit a4aae4
However, it should be possible to modify the HTTPCacheTable class to use a
Packit a4aae4
database system like MySQL or SQLite to make it MP-safe.
Packit a4aae4
Packit a4aae4
The 'ancillary information' functions have been moved to their own class
Packit a4aae4
(from DODSFilter and the file cgi_util.cc).
Packit a4aae4
Packit a4aae4
I fixed the libdap win32 installer so that it does not install stuff in the
Packit a4aae4
win32 system directories anymore.
Packit a4aae4
Packit a4aae4
News for version 3.8.1
Packit a4aae4
Packit a4aae4
The syntax for PROXY_SERVER and NO_PROXY_FOR have been fixed so that they are
Packit a4aae4
easier to use. PROXY_SERVER now takes a value like
Packit a4aae4
'http://user:pw@squid.proxy.edu:3128' and uses it correctly. In that value,
Packit a4aae4
all parts but the host name (squid.proxy.edu) are optional and the old syntax,
Packit a4aae4
as well as several common variants, are accepted. For the NO_PROXY_FOR entry,
Packit a4aae4
the '<protocol>,' is now optional. Only the HTTP protocol is supported or the
Packit a4aae4
proxy server.
Packit a4aae4
Packit a4aae4
News for version 3.8.0, 29 February 2008
Packit a4aae4
Packit a4aae4
The libdap classes and code are now inside of the libdap namespace. In order
Packit a4aae4
to access any of the classes, for example, you will need to do one of the
Packit a4aae4
following. After including the libdap headers you can:
Packit a4aae4
Packit a4aae4
1. add a using statement for the entire libdap namespace:
Packit a4aae4
Packit a4aae4
using namespace libdap ;
Packit a4aae4
Packit a4aae4
2. add a using statement for the classes that you will be using:
Packit a4aae4
Packit a4aae4
using libdap::DAS ;
Packit a4aae4
Packit a4aae4
3. inside your code scope the use of libdap classes.
Packit a4aae4
Packit a4aae4
libdap::DAS *das = code_to_get_das() ;
Packit a4aae4
Packit a4aae4
HTTPCache updated to cache an entry, returning not only the FILE pointer but
Packit a4aae4
also the name of the file in the cache. This way, the cached item could be
Packit a4aae4
passed to a data handler, such as the netcdf_handler, and read.
Packit a4aae4
Packit a4aae4
The pkg build for Mac OSX was updated to automate the creation of the
Packit a4aae4
ReadMe.txt file, add a README and NEWS file to the dmg and automatically
Packit a4aae4
create the dmg using DropDMG.
Packit a4aae4
Packit a4aae4
News for version 3.7.10, 28 November 2007
Packit a4aae4
Packit a4aae4
Fixed XDRStreamMarshaller so that it no longer allocates a huge buffer. This
Packit a4aae4
fixes a bug where the BES fails to start on smaller machines.
Packit a4aae4
Packit a4aae4
News for version 3.7.9, 21 November 2007
Packit a4aae4
Packit a4aae4
Bumped up the soname version numbers for libdapclient and libdapserver due
Packit a4aae4
to changes in the HTTPResponse and AlarmHandler interfaces.
Packit a4aae4
Packit a4aae4
The transfer_data() method defined for Sequence and Structure has been
Packit a4aae4
generalized and implemented for all classes. In the process, so issues with
Packit a4aae4
the way nested sequences were handled have been fixed. I renamed the method
Packit a4aae4
to intern_data() since it is now a part of libdap (and not just two classes).
Packit a4aae4
The method uses the read() methods defined for the type classes (Byte, ...,
Packit a4aae4
Grid) to read data into variables in a DDS as if they were read in using
Packit a4aae4
deserialize(). This is used by the ASCII response generator and might be used
Packit a4aae4
by other 'formatted output' generators.
Packit a4aae4
Packit a4aae4
Generated files (like the grammar files) are now shipped with the source
Packit a4aae4
distributions. (From Patrice Dumas)
Packit a4aae4
Packit a4aae4
Methods which write output using the C++ iostream system have been added back
Packit a4aae4
into the library and are going to replace the FILE* versions of those
Packit a4aae4
methods. We have also added an 'Un/Marshaller' set of classes so that we can
Packit a4aae4
release a version of Hyrax (slated to be 1.4) that will improve BES/OLFS
Packit a4aae4
communication efficiency.
Packit a4aae4
Packit a4aae4
The functionality of the Passive* type classes was subsumed by their parent
Packit a4aae4
classes and they were removed from the library to cut down on 'hierarchy
Packit a4aae4
clutter.' Some other unneeded files were also removed.
Packit a4aae4
Packit a4aae4
The maximum size of a Str object was changes to 65535 (DODS_USHORT_INT-1) to
Packit a4aae4
accommodate HDF5 strings. 
Packit a4aae4
Packit a4aae4
Checkouts from subversion now have no (?) generated files. We are keeping a
Packit a4aae4
copy of the grammars in subdirectory named 'grammarfiles.'
Packit a4aae4
Packit a4aae4
HTTP response codes are now available in libdap HTTPResponse objects. From
Packit a4aae4
Darren Hardy.
Packit a4aae4
Packit a4aae4
News for version 3.7.8, 26 June 2007
Packit a4aae4
Packit a4aae4
Updated the email address for support to support at opendap.org and changed
Packit a4aae4
the tech email list address to opendap-tech at opendap.org. This is part of
Packit a4aae4
the plan to shift support services to OPeNDAP and to use the tech email list
Packit a4aae4
as part of that plan.
Packit a4aae4
Packit a4aae4
Updated to the latest gnulib software.
Packit a4aae4
Packit a4aae4
Memory errors fixed: 
Packit a4aae4
Packit a4aae4
    In the HTTP processing code for clients which was triggered when a client
Packit a4aae4
    read from an older server (older servers had malformed HTTP headers).
Packit a4aae4
Packit a4aae4
    An error in the regular expression class (Regex) where the build
Packit a4aae4
    generated flawed code on a 64-bit machine.
Packit a4aae4
Packit a4aae4
OSX Build improvements.
Packit a4aae4
Packit a4aae4
Patrice Dumas' changes to dods-datatypes.h - Now the header uses the C99
Packit a4aae4
types unless the stdint.h header is not present.
Packit a4aae4
Packit a4aae4
pkg-config support. From a patch by Patrice Dumas.
Packit a4aae4
Packit a4aae4
General improvements to comments, strings and error messages throughout the
Packit a4aae4
libraries. 
Packit a4aae4
Packit a4aae4
News for version 3.7.7, 2 May 2007
Packit a4aae4
Packit a4aae4
Fixed a bug where the build was not installing the dapserver and dapclient
Packit a4aae4
libraries. 
Packit a4aae4
Packit a4aae4
Fixed a handful of platform-specific build issues.
Packit a4aae4
Packit a4aae4
There are some minor performance improvements to the constraint evaluator.
Packit a4aae4
Packit a4aae4
Repaired some problems with the server-side functions.
Packit a4aae4
Packit a4aae4
News for version 3.7.6, 12 March 2007
Packit a4aae4
Packit a4aae4
Fixed a bug in the linear_scale() Constraint Expression function when that
Packit a4aae4
function was used with plain arrays.
Packit a4aae4
Packit a4aae4
I fixed a build issue on linux for ml-structs caused by a bad/missing
Packit a4aae4
#include in GnuRegex.h.
Packit a4aae4
Packit a4aae4
News for version 3.7.5, 7 Feb 2007
Packit a4aae4
Packit a4aae4
Many bug fixes for the Server-Side functions linear_scale(), grid(),
Packit a4aae4
geogrid() and geoarray().
Packit a4aae4
Packit a4aae4
Added dump method to the BaseType classes, DAS, DDS, DataDDS. To do
Packit a4aae4
this, created a DapObj base class for all of these to inherit from
Packit a4aae4
(directly or indirectly) and in the DapObj class is the operator<<
Packit a4aae4
method. This will aid in debugging. Created an indentation classes to
Packit a4aae4
help with dumping objects.
Packit a4aae4
Packit a4aae4
Win32 port fixes. The Win32 build is closer to the Unix build. Our
Packit a4aae4
hope is to get the two to be almost identical so that we can all build
Packit a4aae4
on Win32 and thus get away from having the win32 releases lag behind the
Packit a4aae4
Unix releases.
Packit a4aae4
Packit a4aae4
Fix in Vector for gcc 4.1
Packit a4aae4
Packit a4aae4
News for version 3.7.4, 02 Jan 2007
Packit a4aae4
Packit a4aae4
Build enhancements and bug fixes. See ChangeLog for specifics.
Packit a4aae4
Packit a4aae4
News for version 3.7.3, 24 Nov 2006
Packit a4aae4
Packit a4aae4
Fixed unescattr() so that it works!
Packit a4aae4
Packit a4aae4
Rob added improvements to the win32 build.
Packit a4aae4
Packit a4aae4
Fixed a number of bugs including: Problems with the DDS::transfer_attributes()
Packit a4aae4
method which broke libnc-dap; Added a new configuration parameter to .dodsrc
Packit a4aae4
so that SSL validation can be suppressed; Fixed problems with the change from
Packit a4aae4
\n to \r\n line terminators for MIME headers which slipped through the cracks
Packit a4aae4
the first time; and add gzip and compress to the set of accepted compression
Packit a4aae4
types supported by the client side.
Packit a4aae4
Packit a4aae4
Added Connect::request_ddx() which asks a server for the DDX response. 
Packit a4aae4
Previously, it was possible to use getdap to print the DDX, but that object
Packit a4aae4
was actually built using the DAS and DDS from a server. Now the server is asked
Packit a4aae4
for the DDX. Servers should support this response to be compliant with DAP 3.1.
Packit a4aae4
Packit a4aae4
In the ConstraintEvaluator class, the add_function() method now allows a server
Packit a4aae4
to override a function from libdap with a new definition of the same name.
Packit a4aae4
Packit a4aae4
I added a new interface for the scalar types: value() and set_value() can be
Packit a4aae4
used to get and set values. These are much simple to use than the older
Packit a4aae4
val2buf() and buf2val() methods. This idea was copied from copied from the 
Packit a4aae4
PassiveByte, ..., classes.
Packit a4aae4
Packit a4aae4
New server-side functions for geographical constraints have been added. These
Packit a4aae4
functions provide a way to select parts of Grid or Array variables using
Packit a4aae4
Latitude and Longitude. Also added is a version() function which can be used
Packit a4aae4
by clients to figure out which version of functions is present. The version
Packit a4aae4
function has two forms, one which returns the information as plain text and
Packit a4aae4
one which returns the information in a small XML document. libdap 3.7.3 is a
Packit a4aae4
beta release of these functions. Note that these are _server-side_ functions
Packit a4aae4
so before they can be used, servers need to be built using this library and
Packit a4aae4
installed.
Packit a4aae4
Packit a4aae4
The dap-config script has been fixed so that it behaves more like other 
Packit a4aae4
such scripts.
Packit a4aae4
Packit a4aae4
News for version 3.7.2
Packit a4aae4
Packit a4aae4
Fixed a persistent bug in the GNURegex code. (ticket 389)
Packit a4aae4
Packit a4aae4
Fixed a problem in HTTPConnect where the change from newline to cr/nl line
Packit a4aae4
terminators was not accommodated (no ticket, but part of the issues behind
Packit a4aae4
ticket 552).
Packit a4aae4
Packit a4aae4
Added Sequence::transfer_data(). This method uses the read() method to read
Packit a4aae4
data and follows the same logic used by serialize to determine which data is
Packit a4aae4
'sent' but instead records the data in the d_values field. Thus a Sequence
Packit a4aae4
can transfer data to itself. The locally stored data apes the ability of the
Packit a4aae4
other classes to store a complete response and is the basis for the new ASCII
Packit a4aae4
response code (in dap-server/asciival) which Server4 uses.
Packit a4aae4
Packit a4aae4
There's a fair amount of the geogrid() code now in place, although the
Packit a4aae4
function does not work, I have added a GeoConstraint class which is close to
Packit a4aae4
complete. The CEFunctionsTest unit tests fail.
Packit a4aae4
Packit a4aae4
News for version 3.7.1
Packit a4aae4
Packit a4aae4
Fixed bug #480. Attributes from the HDF4 server were not being handled in a
Packit a4aae4
way that made sense to netCDF clients.
Packit a4aae4
Packit a4aae4
Added a new method to AttrTable so that a vector of strings can be used to
Packit a4aae4
set a vector of attribute values in one call. No more need to build a loop
Packit a4aae4
every time you want to set values.
Packit a4aae4
Packit a4aae4
The grid() CE function now conforms to the design submitted to URI as part of
Packit a4aae4
the REASoN award.
Packit a4aae4
Packit a4aae4
Fixed a bug when % signs were not handled correctly by the code in
Packit a4aae4
escaping.cc. 
Packit a4aae4
Packit a4aae4
News for version 3.7.0
Packit a4aae4
Packit a4aae4
The big change: The first of the DAP3/4 features was added to the libdap
Packit a4aae4
library; the library now includes the DAP protocol version number in all
Packit a4aae4
responses. A savvy client can test for this and process accordingly. 
Packit a4aae4
Packit a4aae4
A second feature, representation of the data source metadata in XML, is
Packit a4aae4
supported in alpha form. Expect the 'DDX' response to change slightly in the
Packit a4aae4
next release. The DDX returned now contains an obsolete element named 'Blob'
Packit a4aae4
which we won't be using. Other than the Blob element, the current DDX
Packit a4aae4
probably will not change much except for the addition of new datatypes,
Packit a4aae4
something that will take place only after other changes are made to the
Packit a4aae4
protocol. Many of the handlers now support returning the DDX, so developers
Packit a4aae4
can begin to play with it's capabilities. 
Packit a4aae4
Packit a4aae4
What's really nice about the DDX: It's cool that the DDX now encode the
Packit a4aae4
metadata in XML, but the really nice feature is that it combines information
Packit a4aae4
from the DDS and DAS, making the association of attributes to variables much
Packit a4aae4
easier. 
Packit a4aae4
Packit a4aae4
Updated the reference guide (HTML pages in docs).
Packit a4aae4
Packit a4aae4
Fixed a pernicious bug in GNURegex.cc
Packit a4aae4
Packit a4aae4
Added the class ConstraintEvaluator. The DDS class now takes the constraint
Packit a4aae4
evaluator as a parameter, so it's possible to replace ours with your own.
Packit a4aae4
Packit a4aae4
The single library libdap has been split into three libraries: libdap for the 
Packit a4aae4
DAP functionality, libdapclient for the client-side classes and libdapserver
Packit a4aae4
for the server-side classes.
Packit a4aae4
Packit a4aae4
Added INSTALL.AIX which contains information about building libdap on AIX
Packit a4aae4
using the _native compiler_. 
Packit a4aae4
Packit a4aae4
News for version 3.6.2
Packit a4aae4
Packit a4aae4
This version includes two bug fixes. 
Packit a4aae4
Packit a4aae4
1. The library can now correctly reads binary data objects saved using the web
Packit a4aae4
interface. Before, this was very hard to do. The utility getdap has been
Packit a4aae4
modified so that it can decode these saved '.dods' files.
Packit a4aae4
Packit a4aae4
2. The DODSFilter class used to build all of our data handlers no longer 
Packit a4aae4
blocks when returning a data object to a web browser. This fixes a problem
Packit a4aae4
where the 'Get Binary' button on the data server's web interface would hang
Packit a4aae4
seemingly forever. In fact it did return the data blob, but only after the 
Packit a4aae4
blocked handler had timed out.
Packit a4aae4
Packit a4aae4
News for version 3.6.1
Packit a4aae4
Packit a4aae4
Fixed a bug in deflate.c: Some comments used the C++ style comments and gcc
Packit a4aae4
rejected that.
Packit a4aae4
Packit a4aae4
Data server filters built with the 3.6.0 library were not compatible with the
Packit a4aae4
dap-server 3.6.0 software because the DODSFilter class did not recognize the
Packit a4aae4
-t option (which is used to pass the handler a timeout value).
Packit a4aae4
Packit a4aae4
News for version 3.6.0
Packit a4aae4
Packit a4aae4
Added patches for RPM spec files from Patrice Dumas.
Packit a4aae4
Packit a4aae4
Fixed a problem where Grids with two or more dimensions with the same name 
Packit a4aae4
were flagged as broken (by Grid::check_semantics). Now they are allowed as per
Packit a4aae4
the specification.
Packit a4aae4
Packit a4aae4
Added a new method get_parent() to AttrTable. This returns the parent 
Packit a4aae4
container for this AttrTable.
Packit a4aae4
Packit a4aae4
I removed the old iostream methods from the library. These methods should not
Packit a4aae4
be used because in many cases since other parts of the library use the C/stdio 
Packit a4aae4
functions for I/O. In older versions of gcc, it was possible to mix the
Packit a4aae4
two types of I/O systems, but not now (and not in other compilers). To change
Packit a4aae4
your code, look in the file Removed_functions.txt to see the functions/methods
Packit a4aae4
that have been removed. In all cases there is a version that takes a FILE *
Packit a4aae4
in place of the ostream &. Use the FILE* version. If you're performing I/O
Packit a4aae4
that relies on operator<<() to do type conversions, use an ostringstream 
Packit a4aae4
in your code and then write the string to stdout (or wherever) using fprintf
Packit a4aae4
like: fprintf(stdout, "%s", oss.str().c_str()). Ugly, but easier in some
Packit a4aae4
cases than replacing lots of tested C++ I/O with fprintf calls.
Packit a4aae4
Packit a4aae4
I removed old methods in Connect that have been deprecated for more than
Packit a4aae4
a year. See Removed_functions.txt
Packit a4aae4
Packit a4aae4
I removed the old Pix methods. See removed_functions.txt.
Packit a4aae4
Packit a4aae4
I removed the const char * overloads added to prevent collisions between
Packit a4aae4
the Pix and String (not string, but GNU's old libg String class) methods.
Packit a4aae4
Packit a4aae4
Added protocol version number header to responses which use the set_mime...()
Packit a4aae4
functions. The new header is called "XDAP-Protocol" and its value is the 
Packit a4aae4
two digit DAP protocol version number. This is now used by the client-side
Packit a4aae4
deserialize() methods; I assume that a server that does not announce its
Packit a4aae4
protocol version is a 2.0 server.
Packit a4aae4
Packit a4aae4
Removed the set_mime...() functions which take an iostream; use the ones 
Packit a4aae4
which take the FILE* instead. We replaced the iostream versions with FILE*
Packit a4aae4
versions a long time ago because the parsers all use FILE* I/O functions
Packit a4aae4
and mixing the C++ and C I/O is not predictable. The old functions were
Packit a4aae4
deprecated. To fix your code, just change the iostream variable to a FILE*.
Packit a4aae4
In most cases this will mean changing 'cout' to 'stdout.' 
Packit a4aae4
Packit a4aae4
News for Release 3.5.3
Packit a4aae4
Packit a4aae4
Changes to the Regex software. I've reimplemented the GNURegex code to 
Packit a4aae4
use the only the POSIX functions. Because of this there are some subtle
Packit a4aae4
changes in the way the class Regex works. These changes address bugs that
Packit a4aae4
show up on Mac OS/X 10.4 (Tiger).
Packit a4aae4
Packit a4aae4
1) Meta characters like '{' now have to be escaped like '\\{'
Packit a4aae4
2) See the docs for the Regex::match and Regex::serach methods. Regex:match 
Packit a4aae4
   returns the number of characters that match or -1 if there's no match.
Packit a4aae4
   Regex::serach returns the position of the _first_ match (not the longest
Packit a4aae4
   as with POSIX) and the length of that first match in the value-result
Packit a4aae4
   parameter 'matchlen'.
Packit a4aae4
3) The Regex constructor now takes only one argument, the regular expression
Packit a4aae4
   to compile. There's a second ctor that takes a second parameter (an int)
Packit a4aae4
   but it is a dummy.
Packit a4aae4
   
Packit a4aae4
As a result of these changes, a small portion of the interface for libdap
Packit a4aae4
has changed.
Packit a4aae4
   
Packit a4aae4
Build improvements from Patrice Dumas.
Packit a4aae4
Packit a4aae4
Added a Mac OS/X package and RedHat rpm/srpm targets. There's also a pmsp
Packit a4aae4
file for use with Mac's PackageMaker.
Packit a4aae4
Packit a4aae4
News for Release 3.5.2
Packit a4aae4
Packit a4aae4
Fixed a bug where malformed Error objects from servers caused an exception.
Packit a4aae4
This caused the original error message to be lost, not very helpful.
Packit a4aae4
Packit a4aae4
The library used a compile-time switch to control use of the factory class for
Packit a4aae4
creation of objects at run-time. This was causing more trouble than it was
Packit a4aae4
preventing, so I removed it. Code should switch from the 'virtual
Packit a4aae4
constructors' to the factory class now.
Packit a4aae4
Packit a4aae4
The Test classes in the subdir 'test' should now produce the same values on
Packit a4aae4
64- and 32-bit machines.
Packit a4aae4
Packit a4aae4
Unit tests should all work (although one of the tests for util.cc is known to
Packit a4aae4
fail on FC4).
Packit a4aae4
Packit a4aae4
Revamped the build to use automake. 
Packit a4aae4
Packit a4aae4
Regression tests and the test classes are now in the subdir 'tests.'
Packit a4aae4
Packit a4aae4
The unit tests are now in the subdir 'unit-tests' and are not built or run by
Packit a4aae4
default. Some of these tests require access to the Internet to work and I
Packit a4aae4
decided to make then not run using the make check target from the top level
Packit a4aae4
(the regression tests in 'tests' do run using the top-level check target) so
Packit a4aae4
that the build would work w/o access to the net.
Packit a4aae4
Packit a4aae4
The rpm spec file has been updated. See INSTALL for information about
Packit a4aae4
building rpm distributions.
Packit a4aae4
Packit a4aae4
Thanks to Patrice Dumas for help on the autoconf/make, with gnulib and the
Packit a4aae4
rpm spec file.
Packit a4aae4
Packit a4aae4
News for Release 3.5.1 beta 2005/05/13
Packit a4aae4
Packit a4aae4
I changed some of the build parameters; the utility script is now named
Packit a4aae4
dap-config, the headers now install into $prefix/include/dap and the static
Packit a4aae4
library no longer has a version number appended. I've also written a rpm spec
Packit a4aae4
file which can be used to build a rpm file of/for a binary distribution. At
Packit a4aae4
this stage you'll need to be pretty savvy with RPM to get it to work; I'll
Packit a4aae4
write up instructions soon.
Packit a4aae4
Packit a4aae4
News for Release 3.5.0 beta 2005/05/05
Packit a4aae4
Packit a4aae4
Changes in the way the software is organized:
Packit a4aae4
Packit a4aae4
* First, the old 'DODS' CVS module is being broken up to facilitate more
Packit a4aae4
  frequent releases of software. libdap++ has a new CVS module named
Packit a4aae4
  'libdap.' To access the software using CVS, use 'cvs co libdap' (where in
Packit a4aae4
  the past you used 'cvs co DODS/src/dap' or 'cvs co DODS' and then changed
Packit a4aae4
  into the DODS/src/dap directory).
Packit a4aae4
Packit a4aae4
* The autoconf scripts have been updated; still no libtool or Makefile.am,
Packit a4aae4
  but the scripts are much more robust.
Packit a4aae4
Packit a4aae4
* The third-party packages are no longer bundled with the library. In a sense
Packit a4aae4
  they never were, but they _were_ a part of the DODS CVS module. Now it's up
Packit a4aae4
  to you to get and install the required packages. Look on the web site (or
Packit a4aae4
  Google) for libxml2 and curl. We build using curl version 7.12.3 and libxml
Packit a4aae4
  version 2.6.16; curl 7.12.0 and libxml2 2.5.7 should work.
Packit a4aae4
Packit a4aae4
* The libdap software now installs in $prefix/{lib,include,bin} instead of
Packit a4aae4
  inside the 'DODS tree.' By default $prefix is /usr/local; use the --prefix
Packit a4aae4
  option of configure to specify a different directory than /usr/local. The
Packit a4aae4
  library itself installs in $prefix/lib as libdap++.a.3.5; libdap++.a is
Packit a4aae4
  symbolically linked to that file. The header files now install in
Packit a4aae4
  $prefix/include/libdap-3.5; $prefix/include/libdap is symbolically linked
Packit a4aae4
  to that directory. The utilities geturl and opendap-config have been
Packit a4aae4
  renamed getdap and dap-config, respectively (the name geturl corresponds to
Packit a4aae4
  another utility). The getdap utility is, except for the name change,
Packit a4aae4
  exactly the same as geturl. The dap-config script provides a way to
Packit a4aae4
  determine which libraries should be included when linking with a particular
Packit a4aae4
  build of libdap++. It also provides information about the version of the
Packit a4aae4
  library linked to $prefix/lib/libdap++.a and some other stuff. Use
Packit a4aae4
  dap-config --help for a listing of all the options. Finally, the deflate
Packit a4aae4
  program, which is used by some servers to provide compressed responses and
Packit a4aae4
  is called by the library is not stored in $prefix/sbin (except on win32
Packit a4aae4
  where it's stored in $prefix/bin).
Packit a4aae4
Packit a4aae4
  The usage program is not currently installed; once we complete the
Packit a4aae4
  reorganization process it will find a good home.
Packit a4aae4
Packit a4aae4
Other changes to libdap++:
Packit a4aae4
Packit a4aae4
* The library now uses a factory class to determine how to instantiate
Packit a4aae4
  specializations of Byte, Int32, et cetera. The class BaseTypeFactory
Packit a4aae4
  defines the interface for the factory and provides a default implementation
Packit a4aae4
  of the class. This implementation instantiates Byte, ..., Grid. Also
Packit a4aae4
  supplied with the library is TestTypeFactory which instantiates the Test
Packit a4aae4
  type classes (TestByte, ..., TestGrid). If your use of the library requires
Packit a4aae4
  that the type classes be specialized, then you must modify your software so
Packit a4aae4
  that it includes a factory class that specializes BaseTypeFactory. Then,
Packit a4aae4
  when you create a DDS (or DataDDS) pass a pointer to an instance of your
Packit a4aae4
  factory to the DDS constructor (or use the new DDS::set_factory() method).
Packit a4aae4
  Look at BaseTypeFactory and the example specialization TestTypeFactory.
Packit a4aae4
  It's very straightforward to make the change.
Packit a4aae4
Packit a4aae4
  For applications which don't specialize the type classes, the default
Packit a4aae4
  factory should be fine. To avoid using the new DDS constructor (which
Packit a4aae4
  requires that a pointer to an instance of BaseTypeFactory be supplied), your
Packit a4aae4
  code must #define the symbol DEFAULT_BASETYPE_FACTORY. If this symbol is
Packit a4aae4
  not defined (at compile time) then various compile-time errors will occur
Packit a4aae4
  (the idea being this will prevent software from building and silently
Packit a4aae4
  ignoring specializations of the type classes). If defined, this use the
Packit a4aae4
  default factory class.
Packit a4aae4
Packit a4aae4
  The documentation for the DDS constructor has some more information.
Packit a4aae4
Packit a4aae4
* The library contains support for the DDX object. The DDX will become the
Packit a4aae4
  foundation of the DAP3 protocol. It uses XML to describe the information
Packit a4aae4
  currently represented using our 'curly-brace' notation and also bundles
Packit a4aae4
  the attributes along with the variables they describe. This will simplify
Packit a4aae4
  many processing tasks for clients. The software provided simplifies
Packit a4aae4
  generating the DDX by building it from existing DAS and DDS objects.
Packit a4aae4
Packit a4aae4
* There has also been some significant re-factoring in DDS and DAS: The
Packit a4aae4
  DDS:send() method has been copied over to DODSFilter and the version in DDS
Packit a4aae4
  has been deprecated and will be removed in a future version of the library.
Packit a4aae4
  The library uses STL iterators almost exclusively and the next version will
Packit a4aae4
  eliminate the ancient Pix class.
Packit a4aae4
Packit a4aae4
* The function dods_root() is now called libdap_root() and tests the
Packit a4aae4
  environment variable LIBDAP_ROOT. If that variable is not set,
Packit a4aae4
  libdap_root() returns the value passed to the --prefix option of configure
Packit a4aae4
  or /usr/local if the option was not used. Added to libdap++ is a function
Packit a4aae4
  libdap_version() which returns the version number of the library. Note that
Packit a4aae4
  libdap_version() is declared as extern "C" so that it can be used in
Packit a4aae4
  configure tests to check for the library.
Packit a4aae4
Packit a4aae4
* The servers no longer provide three programs to handle the das, dds and
Packit a4aae4
  data requests. Instead one *_handler is provided. This reduces the size of
Packit a4aae4
  the servers by a factor of three and paves the way toward integration of
Packit a4aae4
  the HTML and ASCII code into the server binary, which will improve the
Packit a4aae4
  performance and security of those features.