AccessConvert
wrapper is needed less often in practice (#77).bug: Insufficient synchronization on weak platforms (#76).
Never observed in practice (it's suspected practical weak platforms like ARM are still stronger than the model), but still technically UB.
docs: Mention triomphe's ThinArc
around the fat-pointer limitations.
const_empty
method).AsRaw
trait (isn't implemented for owned Arc
/Option<Arc>
).load_signal_safe
. It only complicates things and it is niche; signal-hook-registry has its own simplified version.from_ptr(as_ptr())
. Slight change in RefCnt::inc
which technically is API breaking change, but this one should not matter in practice.From<T: RefCnt>
, Default
).rcu_unwap
, the whole concept is a trap.Strategy
, as a high level way to choose how exactly the locking happens.unstable-weak
to weak
feature. The support is now available on 1.45 (currently in beta).Weak::as_ptr
from std (the weak pointer support, relying on unstable features).Guard::from_inner
.Display
implementation on Guard
to correctly delegate to the underlying Display
implementation.FnMut
as well as Fn
.load
.Guard
now.Arc
/Option<Arc>
or similar.Cache
got moved to top level of the crate.Lease<Option<_>>::unwrap()
, expect()
and into_option()
for convenient use.#[deprecated]
syntax.PrivateSharded
) to complement the global and private unsharded ones.lease
method internally, making it faster in optimistic cases.compare_and_swap
no longer takes &Guard
as current as that is a sure way to create a deadlock.Lease
for temporary storage, which doesn‘t suffer from contention like load
, but doesn’t block writes like Guard
. The downside is it slows down with number of held by the current thread.compare_and_swap
and rcu
uses leases.ArcSwap
as small as the pointer itself, by making the shards/counters and generation ID global. This comes at a theoretical cost of more contention when different threads use different instances.ArcSwapOption
, which allows storing NULL values (as None) as well as a valid pointer.compare_and_swap
accepts borrowed Arc
as current
and doesn't consume one ref count.peek_signal_safe
as the only async signal safe method to use inside signal handlers. This removes the footgun with dropping the Arc
returned from load
inside a signal handler.peek
method to use the Arc
inside without incrementing the reference count.rcu
and rcu_unwrap
return types.rcu
support.compare_and_swap
support.