Skip to content

Commit 02e586c

Browse files
committed
Stabilize atomic_try_update
and deprecate fetch_update starting 1.96.0
1 parent c5e283b commit 02e586c

File tree

10 files changed

+344
-219
lines changed

10 files changed

+344
-219
lines changed

compiler/rustc_lint/src/types.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,7 +1022,8 @@ declare_lint! {
10221022
///
10231023
/// - Passing `Ordering::Release` or `Ordering::AcqRel` as the failure
10241024
/// ordering for any of `AtomicType::compare_exchange`,
1025-
/// `AtomicType::compare_exchange_weak`, or `AtomicType::fetch_update`.
1025+
/// `AtomicType::compare_exchange_weak`, `AtomicType::update`, or
1026+
/// `AtomicType::try_update`.
10261027
INVALID_ATOMIC_ORDERING,
10271028
Deny,
10281029
"usage of invalid atomic ordering in atomic operations and memory fences"
@@ -1118,13 +1119,19 @@ impl InvalidAtomicOrdering {
11181119
let Some((method, args)) = Self::inherent_atomic_method_call(
11191120
cx,
11201121
expr,
1121-
&[sym::fetch_update, sym::compare_exchange, sym::compare_exchange_weak],
1122+
&[
1123+
sym::update,
1124+
sym::try_update,
1125+
sym::fetch_update,
1126+
sym::compare_exchange,
1127+
sym::compare_exchange_weak,
1128+
],
11221129
) else {
11231130
return;
11241131
};
11251132

11261133
let fail_order_arg = match method {
1127-
sym::fetch_update => &args[1],
1134+
sym::update | sym::try_update | sym::fetch_update => &args[1],
11281135
sym::compare_exchange | sym::compare_exchange_weak => &args[3],
11291136
_ => return,
11301137
};

compiler/rustc_span/src/symbol.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2273,6 +2273,7 @@ symbols! {
22732273
try_from_fn,
22742274
try_into,
22752275
try_trait_v2,
2276+
try_update,
22762277
tt,
22772278
tuple,
22782279
tuple_indexing,
@@ -2390,6 +2391,7 @@ symbols! {
23902391
unwrap,
23912392
unwrap_binder,
23922393
unwrap_or,
2394+
update,
23932395
use_cloned,
23942396
use_extern_macros,
23952397
use_nested_groups,

library/alloc/src/sync.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3181,7 +3181,7 @@ impl<T: ?Sized, A: Allocator> Weak<T, A> {
31813181
// Acquire is necessary for the success case to synchronise with `Arc::new_cyclic`, when the inner
31823182
// value can be initialized after `Weak` references have already been created. In that case, we
31833183
// expect to observe the fully initialized value.
3184-
if self.inner()?.strong.fetch_update(Acquire, Relaxed, checked_increment).is_ok() {
3184+
if self.inner()?.strong.try_update(Acquire, Relaxed, checked_increment).is_ok() {
31853185
// SAFETY: pointer is not null, verified in checked_increment
31863186
unsafe { Some(Arc::from_inner_in(self.ptr, self.alloc.clone())) }
31873187
} else {

library/core/src/alloc/global.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ use crate::{cmp, ptr};
5757
/// let mut allocated = 0;
5858
/// if self
5959
/// .remaining
60-
/// .fetch_update(Relaxed, Relaxed, |mut remaining| {
60+
/// .try_update(Relaxed, Relaxed, |mut remaining| {
6161
/// if size > remaining {
6262
/// return None;
6363
/// }

0 commit comments

Comments
 (0)