On 10/7/24 5:31 PM, Peter Dimov via Boost wrote:
Andrey Semashev wrote:
On 10/7/24 22:16, Peter Dimov via Boost wrote:
My point was that if we want people to contribute to our libraries in 2024, we shouldn't require from them to do so using C++98 code, because that's, well, unpleasant and an outdated skill that nobody should have to acquire.
No one has suggested that anyone be required to use C++98 code.
The suggestion here wasn't about declaring core libraries deprecated... well, it was, but "obsolete" is a better term than "deprecated". It's about discouraging the use of obsolete libraries in new code. The problem is that when we display the list of libraries, we give no hints to the initiated that a library has been obsoleted by the language (which is the case with Move and Foreach), the stdlib (the case with Bind, MemFn, Ratio, and many others), or by another Boost library (MPL and Mp11.)
Yes, this actually happens; people do sometimes choose to use an obsolete library in error just because our list doesn't make the above clearer.
(And no, the Serialization library isn't obsolete, because it hasn't yet been obsoleted by anything.)
Hmmm - many people have suggested that it's been made "obsolete" by Cereal. Many have suggested using JSON for serialization. It sounds like that the words "deprecated" and "obsolete" haven't been well defined in this discussion and this has created a lot of confusion - at least for me personally. Perhaps the proposed list should look something like: .. ForEach // not recommended for new designs. Use std::foreach instead. ... Serialization // not recommended for new designs. Cereal or Boost.JSON instead. ... thus avoiding using this confusion at its source. Boost could ship with everything it does now in order to support older implementations while not promoting their usage - or even making them publicly visible. Hopefully, this would give the large majority of users a hint that will make their life easier and their experience with Boost better. Robert Ramey