Subject: problem Boost libraries
From: [email-masked]
To: (Usenet)
Date: Thu, 25 Jan 2007 03:33:34 CST
Newsgroups: comp.lang.c++.moderated

{ Mod note: I'm accepting this article because the issues raised here, 
essentially the quality of specific parts of the Boost library, seem to 
be of general interest to the C++ community. -mod/aps }

A few months ago, in comp.lang.c++.moderated, Wil Evers pointed out
some problems in a few Boost libraries (below). Since we are
considering using all of the libraries mentioned (and also
Boost.Threads and Boost.uBlas), I wonder if these problems have been
fixed.

I've looked at Boost-developers archives, where this message was
forwarded. It seems that only the protability of Boost.Test lead to
some discussion.

BTW, what's a header race? The order of #inclusion or linking affecting
program behavior?

==========================================================

Wil Evers wrote:

>>  [...]  For some of the Boost libraries, we've actually
>> decided
>> to phase out their use at the first available opportunity.  These
>> are:

>> filesystem
>> program_options
>> serialization
>> test

[...]

I'll be specific (all targeted at the official boost-1.33.1 release) :

1) filesystem:

- Major problems interfacing with the native API on one our targets
(the
Alpha); unmaintainable Boost source, so we couldn't implement any
reasonable workaround
- Uses inherently thread-unsafe function-local statics

2) program_options:

-  Some functions in the public API, used in the examples in the
official
documentation, dropped without any explanation

3) serialization

- A header race; doesn't tolerate including <boost/shared_ptr.hpp>
before
<boost/serialization/shared_ptr.hpp>
- Yet another header race involving headers in both boost/archive and
boost/serialization; details on request

4) test (please don't get me started)

- Way too intimate with its developer's apparently native platform
(WIN32)
for any reasonable degree of portability (takes over main(), maps OS
signals to C++ exceptions, continues to run after failing assert()s,
etc.)
- Lots of construction/destruction ordering issues - major changes here

between boost-1.32 and boost-1.33.1

Regards,

- Wil

-- 
      [ See http://www.gotw.ca/resources/clcm.htm for info about ]
      [ comp.lang.c++.moderated.    First time posters: Do this! ]