From: Jeff Garland (jeff_at_[hidden])
Date: 2006-05-07 17:36:46


Nicola Musatti wrote:

> I don't agree. Why remove a support that is there and has been through
> several Boost releases? I understand that library authors wishing to
> evolve their libraries are entitled to choose which compilers they plan
> t osupport and the amount of effort they wish to devote to supporting
> obsolete compilers, but if it works, why break it?

Because, I have to maintain several versions of code that have the
potential for different bugs. In date_time the from_string/to_string
methods were written early on and were carefully crafted to work with
VC6, Borland, etc. Even now, like yesterday actually, a new failure
mode will show up in these functions. In the meantime, I've completely
rewritten the i/o subsystem -- it's much more flexible and robust. It
supports wide chars, is heavy on templates, and breaks on a bunch of old
compilers -- basically it's disabled on all the legacy compilers.

Now I could trivially rewrite the from_string/to_string using the new
i/o code and fix any issues in one place, but I can't do it without
breaking old compiler support. In addition, I have a second variant of
i/o code on the old compilers to maintain and fix bugs for. And last,
but not least, the only reason date_time isn't header-only at this point
is the legacy i/o code.

So all of this is a big pain for me and that's why I'm so vocal about
this release being the end of the line for date_time support of old
compilers and standard libraries. When I look at the global boost
situation it pains me to see library authors dedicated to defining and
evolving the future of C++ spending their time trying to make these
non-compliant tools work. Every minute they spend adjusting for the old
compilers is a minute taken away from something better for the future of
C++ programmers overall. It's my judgment overall that we've crossed
over the line where it's far better for us to focus on the future rather
than the past. A Boost-wide deprecation of the old compilers/standard
libs takes the brakes off the forward progress.

BTW, as a little note of history, when I first used Boost 5 or 6 years
ago now, many of the libraries were only 'marginally portable' -- mostly
because typical compilers of the day were VC6 and g++ 2.93. All sorts
of libraries broke different compilers in different ways. The standard
libraries of the day were mostly just bad. Now we have a whole breed of
excellent compilers/standard libs that will compile and run a much
larger collection of Boost libraries. This is a huge leap forward from
where we were. I believe part of that progress was brought about by
Boost "pushing things" forward. The way I see it, without Boost
continuing to push, much of the life would come out of the C++
evolution. I want to maximize the push now because we still have much
work to do.

Jeff