Boost logo

Boost :

From: Christoph Ludwig (cludwig_at_[hidden])
Date: 2005-04-08 02:09:43


On Thu, Apr 07, 2005 at 10:13:35PM -0700, Robert Ramey wrote:
> The latest updates to shared_pointer checked into CVS about 10 days ago
> break current serialzation of shared pointer. In no way will I have time to
> fix this before 15 April. So I would expect we'll have to deprecate shared
> pointer serialization for 1.33 . Current users of this combination will
> have to wait until Peter Dimov's "proper" implementation in 1.34.

I did not follow the discussions about lock free implementations for
shared_ptr closely. But I saw that they make use of inline assembler whence
there cannot be a lock free implementation that is portable across all
platforms. I therefore gather that the previous implementation is still
available as a fall-back for platforms without a lock-free implementation,
isn't it?

Can the old implementation be made available in 1.33 by means of a
preprocessor switch? (Something like BOOST_SHARED_PTR_USE_LEGACY_CODE.) That
would allow users of the serialization library to update to 1.33. The old
implementation could still be declared deprecated on all platforms where a
lock free implementation is available.

I don't doubt that Peter Dimov tested the lock free shared_ptr implementations
thoroughly. But it is my understanding that this is an area where subtle bugs
lurk all over the place whence it is still possible that not anticipated
problems arise after the release of 1.33. On the other hand, the old
implementation was stable and has been used in many, many applications without
problems. I imagine that many users will feel more comfortable about switching
to 1.33 if the old implementation is still available as a safety net.

Once the lock free implementations turned out to be stable and there is a
solution for the serialization of shared_ptr the preprocessor switch I
proposed above can be removed in a later release.




Boost list run by bdawes at, gregod at, cpdaniel at, john at