"SfR Fresh" - the SfR Freeware/Shareware Archive 
Member "libdap-3.8.2/NEWS" of archive libdap-3.8.2.tar.gz:
As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers.
Alternatively you can here view or download the uninterpreted source code file.
That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
1
2 $Id: NEWS 18929 2008-06-23 19:56:53Z jimg $
3
4 News for version 3.8.2
5
6 Significant improvements to the HTTP cache. The cache software could return
7 erroneous responses in some rare cases when using multi-threaded code. Fixed.
8 Also the entire caching system is now much more robust since the 'table' that
9 contains information about individual entries is encapsulated in it's own
10 class. The HTTP cache is still both thread-safe and _not_ multi-process safe.
11 However, it should be possible to modify the HTTPCacheTable class to use a
12 database system like MySQL or SQLite to make it MP-safe.
13
14 The 'ancillary information' functions have been moved to their own class
15 (from DODSFilter and the file cgi_util.cc).
16
17 I fixed the libdap win32 installer so that it does not install stuff in the
18 win32 system directories anymore.
19
20 News for version 3.8.1
21
22 The syntax for PROXY_SERVER and NO_PROXY_FOR have been fixed so that they are
23 easier to use. PROXY_SERVER now takes a value like
24 'http://user:pw@squid.proxy.edu:3128' and uses it correctly. In that value,
25 all parts but the host name (squid.proxy.edu) are optional and the old syntax,
26 as well as several comman variants, are accepted. For the NO_PROXY_FOR entry,
27 the '<protocol>,' is now optional. Only the HTTP protocol is supported or the
28 proxy server.
29
30 News for version 3.8.0, 29 February 2008
31
32 The libdap classes and code are now inside of the libdap namespace. In order
33 to access any of the classes, for example, you will need to do one of the
34 following. After including the libdap headers you can:
35
36 1. add a using statement for the entire libdap namespace:
37
38 using namespace libdap ;
39
40 2. add a using statement for the classes that you will be using:
41
42 using libdap::DAS ;
43
44 3. inside your code scope the use of libdap classes.
45
46 libdap::DAS *das = code_to_get_das() ;
47
48 HTTPCache updated to cache an entry, returning not only the FILE pointer but
49 also the name of the file in the cache. This way, the cached item could be
50 passed to a data handler, such as the netcdf_handler, and read.
51
52 The pkg build for Mac OSX was updated to automate the creation of the
53 ReadMe.txt file, add a README and NEWS file to the dmg and automatically
54 create the dmg using DropDMG.
55
56 News for version 3.7.10, 28 November 2007
57
58 Fixed XDRStreamMarshaller so that it no longer allocates a huge buffer. This
59 fixes a bug where the BES fails to start on smaller machines.
60
61 News for version 3.7.9, 21 November 2007
62
63 Bumped up the soname version numbers for libdaoclient and libdapserver due
64 to changes in the HTTPResponse and AlarmHandler interfaces.
65
66 The transfer_data() method defined for Sequence and Structure has been
67 generalized and implemented for all classes. In the process, so issues with
68 the way nested sequences were handled have been fixed. I renamed the method
69 to intern_data() since it is now a part of libdap (and not just two classes).
70 The method uses the read() methods defined for the type classes (Byte, ...,
71 Grid) to read data into variables in a DDS as if they were read in using
72 deserialize(). This is used by the ASCII response generator and might be used
73 by other 'formatted output' generators.
74
75 Generated files (like the grammar files) are now shipped with the source
76 distributions. (From Patrice Dumas)
77
78 Methods which write output using the C++ iostream system have been added back
79 into the library and are going to replace the FILE* versions of those
80 methods. We have also added an 'Un/Marshaller' set of classes so that we can
81 release a version of Hyrax (slated to be 1.4) that will improve BES/OLFS
82 communication efficiency.
83
84 The functionality of the Passive* type classes was subsumed by their parent
85 classes and they were removed from the library to cut down on 'hierarchy
86 clutter.' Some other unneeded files were also removed.
87
88 The maximum size of a Str object was changes to 65535 (DODS_USHORT_INT-1) to
89 accommodate HDF5 strings.
90
91 Checkouts from subversion now have no (?) generated files. We are keeping a
92 copy of the grammars in subdirectory named 'grammarfiles.'
93
94 HTTP response codes are now available in libdap HTTPResponse objects. From
95 Darren Hardy.
96
97 News for version 3.7.8, 26 June 2007
98
99 Updated the email address for support to support at opendap.org and changed
100 the tech email list address to opendap-tech at opendap.org. This is part of
101 the plan to shift support services to OPeNDAP and to use the tech email list
102 as part of that plan.
103
104 Updated to the latest gnulib software.
105
106 Memory errors fixed:
107
108 In the HTTP processing code for clients which was triggered when a client
109 read from an older server (older servers had malformed HTTP headers).
110
111 An error in the regular expression class (Regex) where the build
112 generated flawed code on a 64-bit machine.
113
114 OSX Build improvements.
115
116 Patrice Dumas' changes to dods-datatypes.h - Now the header uses the C99
117 types unless the stdint.h header is not present.
118
119 pkg-config support. From a patch by Patrice Dumas.
120
121 General improvements to comments, strings and error messages throughout the
122 libraries.
123
124 News for version 3.7.7, 2 May 2007
125
126 Fixed a bug where the build was not installing the dapserver and dapclient
127 libraries.
128
129 Fixed a handful of platform-specific build issues.
130
131 There are some minor performance improvements to the constraint evaluator.
132
133 Repaired some problems with the server-side functions.
134
135 News for version 3.7.6, 12 March 2007
136
137 Fixed a bug in the linear_scale() Constraint Expression function when that
138 function was used with plain arrays.
139
140 I fixed a build issue on linux for ml-structs caused by a bad/missing
141 #include in GnuRegex.h.
142
143 News for version 3.7.5, 7 Feb 2007
144
145 Many bug fixes for the Server-Side functions linear_scale(), grid(),
146 geogrid() and geoarray().
147
148 Added dump method to the BaseType classes, DAS, DDS, DataDDS. To do
149 this, created a DapObj base class for all of these to inherit from
150 (directly or indirectly) and in the DapObj class is the operator<<
151 method. This will aid in debugging. Created an indentation classes to
152 help with dumping objects.
153
154 Win32 port fixes. The Win32 build is closer to the Unix build. Our
155 hope is to get the two to be almost identical so that we can all build
156 on Win32 and thus get away from having the win32 releases lag behind the
157 Unix releases.
158
159 Fix in Vector for gcc 4.1
160
161 News for version 3.7.4, 02 Jan 2007
162
163 Build enhancements and bug fixes. See ChangeLog for specifics.
164
165 News for version 3.7.3, 24 Nov 2006
166
167 Fixed unescattr() so that it works!
168
169 Rob added improvements to the win32 build.
170
171 Fixed a number of bugs including: Problems with the DDS::transfer_attributes()
172 method which broke libnc-dap; Added a new configuration parameter to .dodsrc
173 so that SSL validation can be suppressed; Fixed problems with the change from
174 \n to \r\n line terminators for MIME headers which slipped through the cracks
175 the first time; and add gzip and compress to the set of accepted compression
176 types supported by the client side.
177
178 Added Connect::request_ddx() which asks a server for the DDX response.
179 Previously, it was possible to use getdap to print the DDX, but that object
180 was actually built using the DAS and DDS from a server. Now the server is asked
181 for the DDX. Servers should support this response to be compliant with DAP 3.1.
182
183 In the ConstraintEvaluator class, the add_function() method now allows a server
184 to override a function from libdap with a new definition of the same name.
185
186 I added a new interface for the scalar types: value() and set_value() can be
187 used to get and set values. These are much simple to use than the older
188 val2buf() and buf2val() methods. This idea was copied from copied from the
189 PassiveByte, ..., classes.
190
191 New server-side functions for geographical constraints have been added. These
192 functions provide a way to select parts of Grid or Array variables using
193 Latitude and Longitude. Also added is a version() function which can be used
194 by clients to figure out which version of functions is present. The version
195 function has two forms, one which returns the information as plain text and
196 one which returns the information in a small XML document. libdap 3.7.3 is a
197 beta release of these functions. Note that these are _server-side_ functions
198 so before they can be used, servers need to be built using this library and
199 installed.
200
201 The dap-config script has been fixed so that it behaves more like other
202 such scripts.
203
204 News for version 3.7.2
205
206 Fixed a persistent bug in the GNURegex code. (ticket 389)
207
208 Fixed a problem in HTTPConnect where the change from newline to cr/nl line
209 terminators was not accommodated (no ticket, but part of the issues behind
210 ticket 552).
211
212 Added Sequence::transfer_data(). This method uses the read() method to read
213 data and follows the same logic used by serialize to determine which data is
214 'sent' but instead records the data in the d_values field. Thus a Sequence
215 can transfer data to itself. The locally stored data apes the ability of the
216 other classes to store a complete response and is the basis for the new ASCII
217 response code (in dap-server/asciival) which Server4 uses.
218
219 There's a fair amount of the geogrid() code now in place, although the
220 function does not work, I have added a GeoConstraint class which is close to
221 complete. The CEFunctionsTest unit tests fail.
222
223 News for version 3.7.1
224
225 Fixed bug #480. Attributes from the HDF4 server were not being handled in a
226 way that made sense to netCDF clients.
227
228 Added a new method to AttrTable so that a vector of strings can be used to
229 set a vector of attribute values in one call. No more need to build a loop
230 every time you want to set values.
231
232 The grid() CE function now conforms to the design submitted to URI as part of
233 the REASoN award.
234
235 Fixed a bug when % signs were not handled correctly by the code in
236 escaping.cc.
237
238 News for version 3.7.0
239
240 The big change: The first of the DAP3/4 features was added to the libdap
241 library; the library now includes the DAP protocol version number in all
242 responses. A savvy client can test for this and process accordingly.
243
244 A second feature, representation of the data source metadata in XML, is
245 supported in alpha form. Expect the 'DDX' response to change slightly in the
246 next release. The DDX returned now contains an obsolete element named 'Blob'
247 which we won't be using. Other than the Blob element, the current DDX
248 probably will not change much except for the addition of new datatypes,
249 something that will take place only after other changes are made to the
250 protocol. Many of the handlers now support returning the DDX, so developers
251 can begin to play with it's capabilities.
252
253 What's really nice about the DDX: It's cool that the DDX now encode the
254 metadata in XML, but the really nice feature is that it combines information
255 from the DDS and DAS, making the association of attributes to variables much
256 easier.
257
258 Updated the reference guide (HTML pages in docs).
259
260 Fixed a pernicious bug in GNURegex.cc
261
262 Added the class ConstraintEvaluator. The DDS class now takes the constraint
263 evaluator as a parameter, so it's possible to replace ours with your own.
264
265 The single library libdap has been split into three libraries: libdap for the
266 DAP functionality, libdapclient for the client-side classes and libdapserver
267 for the server-side classes.
268
269 Added INSTALL.AIX which contains information about building libdap on AIX
270 using the _native compiler_.
271
272 News for version 3.6.2
273
274 This version includes two bug fixes.
275
276 1. The library can now correctly reads binary data objects saved using the web
277 interface. Before, this was very hard to do. The utility getdap has been
278 modified so that it can decode these saved '.dods' files.
279
280 2. The DODSFilter class used to build all of our data handlers no longer
281 blocks when returning a data object to a web browser. This fixes a problem
282 where the 'Get Binary' button on the data server's web interface would hang
283 seemingly forever. In fact it did return the data blob, but only after the
284 blocked handler had timed out.
285
286 News for version 3.6.1
287
288 Fixed a bug in deflate.c: Some comments used the C++ style comments and gcc
289 rejected that.
290
291 Data server filters built with the 3.6.0 library were not compatible with the
292 dap-server 3.6.0 software because the DODSFilter class did not recognize the
293 -t option (which is used to pass the handler a timeout value).
294
295 News for version 3.6.0
296
297 Added patches for RPM spec files from Patrice Dumas.
298
299 Fixed a problem where Grids with two or more dimensions with the same name
300 were flagged as broken (by Grid::check_semantics). Now they are allowed as per
301 the specification.
302
303 Added a new method get_parent() to AttrTable. This returns the parent
304 container for this AttrTable.
305
306 I removed the old iostream methods from the library. These methods should not
307 be used because in many cases since other parts of the library use the C/stdio
308 functions for I/O. In older versions of gcc, it was possible to mix the
309 two types of I/O systems, but not now (and not in other compilers). To change
310 your code, look in the file Removed_functions.txt to see the functions/methods
311 that have been removed. In all cases there is a version that takes a FILE *
312 in place of the ostream &. Use the FILE* version. If you're performing I/O
313 that relies on operator<<() to do type conversions, use an ostringstream
314 in your code and then write the string to stdout (or wherever) using fprintf
315 like: fprintf(stdout, "%s", oss.str().c_str()). Ugly, but easier in some
316 cases than replacing lots of tested C++ I/O with fprintf calls.
317
318 I removed old methods in Connect that have been deprecated for more than
319 a year. See Removed_functions.txt
320
321 I removed the old Pix methods. See removed_functions.txt.
322
323 I removed the const char * overloads added to prevent collisions between
324 the Pix and String (not string, but GNU's old libg String class) methods.
325
326 Added protocol version number header to responses which use the set_mime...()
327 functions. The new header is called "XDAP-Protocol" and its value is the
328 two digit DAP protocol version number. This is now used by the client-side
329 deserialize() methods; I assume that a server that does not announce its
330 protocol version is a 2.0 server.
331
332 Removed the set_mime...() functions which take an iostream; use the ones
333 which take the FILE* instead. We replaced the iostream versions with FILE*
334 versions a long time ago because the parsers all use FILE* I/O functions
335 and mixing the C++ and C I/O is not predictable. The old functions were
336 deprecated. To fix your code, just change the iostream variable to a FILE*.
337 In most cases this will mean changing 'cout' to 'stdout.'
338
339 News for Release 3.5.3
340
341 Changes to the Regex software. I've reimplemented the GNURegex code to
342 use the only the POSIX functions. Because of this there are some subtle
343 changes in the way the class Regex works. These changes address bugs that
344 show up on Mac OS/X 10.4 (Tiger).
345
346 1) Meta characters like '{' now have to be escaped like '\\{'
347 2) See the docs for the Regex::match and Regex::serach methods. Regex:match
348 returns the number of characters that match or -1 if there's no match.
349 Regex::serach returns the position of the _first_ match (not the longest
350 as with POSIX) and the length of that first match in the value-result
351 parameter 'matchlen'.
352 3) The Regex constructor now takes only one argument, the regular expression
353 to compile. There's a second ctor that takes a second parameter (an int)
354 but it is a dummy.
355
356 As a result of these changes, a small portion of the interface for libdap
357 has changed.
358
359 Build improvements from Patrice Dumas.
360
361 Added a Mac OS/X package and RedHat rpm/srpm targets. There's also a pmsp
362 file for use with Mac's PackageMaker.
363
364 News for Release 3.5.2
365
366 Fixed a bug where malformed Error objects from servers caused an exception.
367 This caused the original error message to be lost, not very helpful.
368
369 The library used a compile-time switch to control use of the factory class for
370 creation of objects at run-time. This was causing more trouble than it was
371 preventing, so I removed it. Code should switch from the 'virtual
372 constructors' to the factory class now.
373
374 The Test classes in the subdir 'test' should now produce the same values on
375 64- and 32-bit machines.
376
377 Unit tests should all work (although one of the tests for util.cc is known to
378 fail on FC4).
379
380 Revamped the build to use automake.
381
382 Regression tests and the test classes are now in the subdir 'tests.'
383
384 The unit tests are now in the subdir 'unit-tests' and are not built or run by
385 default. Some of these tests require access to the Internet to work and I
386 decided to make then not run using the make check target from the top level
387 (the regression tests in 'tests' do run using the top-level check target) so
388 that the build would work w/o access to the net.
389
390 The rpm spec file has been updated. See INSTALL for information about
391 building rpm distributions.
392
393 Thanks to Patrice Dumas for help on the autoconf/make, with gnulib and the
394 rpm spec file.
395
396 News for Release 3.5.1 beta 2005/05/13
397
398 I changed some of the build parameters; the utility script is now named
399 dap-config, the headers now install into $prefix/include/dap and the static
400 library no longer has a version number appended. I've also written a rpm spec
401 file which can be used to build a rpm file of/for a binary distribution. At
402 this stage you'll need to be pretty savvy with RPM to get it to work; I'll
403 write up instructions soon.
404
405 News for Release 3.5.0 beta 2005/05/05
406
407 Changes in the way the software is organized:
408
409 * First, the old 'DODS' CVS module is being broken up to facilitate more
410 frequent releases of software. libdap++ has a new CVS module named
411 'libdap.' To access the software using CVS, use 'cvs co libdap' (where in
412 the past you used 'cvs co DODS/src/dap' or 'cvs co DODS' and then changed
413 into the DODS/src/dap directory).
414
415 * The autoconf scripts have been updated; still no libtool or Makefile.am,
416 but the scripts are much more robust.
417
418 * The third-party packages are no longer bundled with the library. In a sense
419 they never were, but they _were_ a part of the DODS CVS module. Now it's up
420 to you to get and install the required packages. Look on the web site (or
421 Google) for libxml2 and curl. We build using curl version 7.12.3 and libxml
422 version 2.6.16; curl 7.12.0 and libxml2 2.5.7 should work.
423
424 * The libdap software now installs in $prefix/{lib,include,bin} instead of
425 inside the 'DODS tree.' By default $prefix is /usr/local; use the --prefix
426 option of configure to specify a different directory than /usr/local. The
427 library itself installs in $prefix/lib as libdap++.a.3.5; libdap++.a is
428 symbolically linked to that file. The header files now install in
429 $prefix/include/libdap-3.5; $prefix/include/libdap is symbolically linked
430 to that directory. The utilities geturl and opendap-config have been
431 renamed getdap and dap-config, respectively (the name geturl corresponds to
432 another utility). The getdap utility is, except for the name change,
433 exactly the same as geturl. The dap-config script provides a way to
434 determine which libraries should be included when linking with a particular
435 build of libdap++. It also provides information about the version of the
436 library linked to $prefix/lib/libdap++.a and some other stuff. Use
437 dap-config --help for a listing of all the options. Finally, the deflate
438 program, which is used by some servers to provide compressed responses and
439 is called by the library is not stored in $prefix/sbin (except on win32
440 where it's stored in $prefix/bin).
441
442 The usage program is not currently installed; once we complete the
443 reorganization process it will find a good home.
444
445 Other changes to libdap++:
446
447 * The library now uses a factory class to determine how to instantiate
448 specializations of Byte, Int32, et cetera. The class BaseTypeFactory
449 defines the interface for the factory and provides a default implementation
450 of the class. This implementation instantiates Byte, ..., Grid. Also
451 supplied with the library is TestTypeFactory which instantiates the Test
452 type classes (TestByte, ..., TestGrid). If your use of the library requires
453 that the type classes be specialized, then you must modify your software so
454 that it includes a factory class that specializes BaseTypeFactory. Then,
455 when you create a DDS (or DataDDS) pass a pointer to an instance of your
456 factory to the DDS constructor (or use the new DDS::set_factory() method).
457 Look at BaseTypeFactory and the example specialization TestTypeFactory.
458 It's very straightforward to make the change.
459
460 For applications which don't specialize the type classes, the default
461 factory should be fine. To avoid using the new DDS constructor (which
462 requires that a pointer to an instance of BaseTypeFactory be supplied), your
463 code must #define the symbol DEFAULT_BASETYPE_FACTORY. If this symbol is
464 not defined (at compile time) then various compile-time errors will occur
465 (the idea being this will prevent software from building and silently
466 ignoring specializations of the type classes). If defined, this use the
467 default factory class.
468
469 The documentation for the DDS constructor has some more information.
470
471 * The library contains support for the DDX object. The DDX will become the
472 foundation of the DAP3 protocol. It uses XML to describe the information
473 currently represented using our 'curly-brace' notation and also bundles
474 the attributes along with the variables they describe. This will simplify
475 many processing tasks for clients. The software provided simplifies
476 generating the DDX by building it from existing DAS and DDS objects.
477
478 * There has also been some significant re-factoring in DDS and DAS: The
479 DDS:send() method has been copied over to DODSFilter and the version in DDS
480 has been deprecated and will be removed in a future version of the library.
481 The library uses STL iterators almost exclusively and the next version will
482 eliminate the ancient Pix class.
483
484 * The function dods_root() is now called libdap_root() and tests the
485 environment variable LIBDAP_ROOT. If that variable is not set,
486 libdap_root() returns the value passed to the --prefix option of configure
487 or /usr/local if the option was not used. Added to libdap++ is a function
488 libdap_version() which returns the version number of the library. Note that
489 libdap_version() is declared as extern "C" so that it can be used in
490 configure tests to check for the library.
491
492 * The servers no longer provide three programs to handle the das, dds and
493 data requests. Instead one *_handler is provided. This reduces the size of
494 the servers by a factor of three and paves the way toward integration of
495 the HTML and ASCII code into the server binary, which will improve the
496 performance and security of those features.