Boost logo

Boost :

Subject: Re: [boost] The future and present of Boost
From: Robert Ramey (ramey_at_[hidden])
Date: 2018-10-24 19:58:19


On 10/24/18 11:12 AM, Deniz Bahadir via Boost wrote:

Answering as a library maintainer.

The library I maintain is C++03 compatible. This is because that was
the standard in existence when it written.

As new standards come into existence, sometimes a problem comes up. This
is usually because of something like: the

a) library depends on undefined behavior. This library could not be
written in such a way to avoid this. This includes working around
optimizer dropping functions in release mode. These functions are
necessary but are not explicitly named.

b) some undefined behavior either gets defined or becomes undefined in a
different way and one or more of the tests fails. Or some new feature is
implemented. The current example is that visibility is now being supported.

c) I go back and make an improvement. Currently I keep the improvement
consistent with C++03. it's not hard to do.

d) The library is still compatible with C++03, C++11, C++14 and likely
C++17.

So what should I, as a maintainer be doing differently?

Of course if the library were be written today, it would save a lot of
time and grief to just use the latest version. Number of lines of code
would probably drop by 50% or more. But the library is not being
written today, so this question is not relevant.

Should the library have been designed differently so it would depend
less on undefined behavior? Maybe. but the library is in wide use and
it was required to support wide functionality in order to pass the boost
review process. With the benefit of hind sight, a couple of features
which complicated the design weren't necessary and not including those
would make the library simpler and easier to maintain. But there aren't
very many of such features. Pretty amazing given that the library was
released 15 years ago. Since all this is in the past and not that big a
deal - this question is not relevant

Should the library be re-written to exploit the knowledge gained over
the past 15 years and make it smaller and easier to maintain? Maybe,
but no one has volunteered lately. I get a lot of suggestions though.

So - I just don't see any of this discussion as being at all relevant to
the maintainer of an old library. Now if it were somehow mandated that
libraries are prohibited from being useful with versions of C++ earlier
than C++11?, that would effect me as a library maintainer. I would
likely have to insert one statement which fails to compile under earlier
versions to fulfill this requirement.

Sooooooo - I honestly can't see any this discussion is relevant to the
present and future of boost - the subject line of the thread.

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk