- Implement
Display
forCachePadded
. (#1097)
- Remove dependency on
cfg-if
. (#1072)
- Relax the minimum supported Rust version to 1.60. (#1056)
- Improve scalability of
AtomicCell
fallback. (#1055)
- Bump the minimum supported Rust version to 1.61. (#1037)
- Improve support for targets without atomic CAS or 64-bit atomic. (#1037)
- Always implement
UnwindSafe
andRefUnwindSafe
forAtomicCell
. (#1045) - Improve compatibility with Miri, TSan, and loom. (#995, #1003)
- Improve compatibility with unstable
oom=panic
. (#1045) - Improve implementation of
CachePadded
. (#1014, #1025) - Update
loom
dependency to 0.7.
- Improve implementation of
CachePadded
. (#967)
- Add
#[clippy::has_significant_drop]
toShardedLock{Read,Write}Guard
. (#958) - Improve handling of very large timeout. (#953)
- Soft-deprecate
thread::scope()
in favor of the more efficientstd::thread::scope
that stabilized on Rust 1.63. (#954)
- Fix build script bug introduced in 0.8.13. (#932)
Note: This release has been yanked due to regression fixed in 0.8.14.
- Improve support for custom targets. (#922)
- Removes the dependency on the
once_cell
crate to restore the MSRV. (#913) - Work around rust-lang#98302, which causes compile error on windows-gnu when LTO is enabled. (#913)
- Bump the minimum supported Rust version to 1.38. (#877)
- Fix unsoundness of
AtomicCell
on types containing niches. (#834) This fix contains breaking changes, but they are allowed because this is a soundness bug fix. See #834 for more.
- Replace lazy_static with once_cell. (#817)
- Fix a bug when unstable
loom
support is enabled. (#787)
- Add
AtomicCell<{i*,u*}>::{fetch_max,fetch_min}
. (#785) - Add
AtomicCell<{i*,u*,bool}>::fetch_nand
. (#785) - Fix unsoundness of
AtomicCell<{i,u}64>
arithmetics on 32-bit targets that supportAtomic{I,U}64
(#781)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Re-add
AtomicCell<{i,u}64>::{fetch_add,fetch_sub,fetch_and,fetch_or,fetch_xor}
that were accidentally removed in 0.8.0 on targets that do not supportAtomic{I,U}64
. (#767) - Re-add
AtomicCell<{i,u}128>::{fetch_add,fetch_sub,fetch_and,fetch_or,fetch_xor}
that were accidentally removed in 0.8.0. (#767)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Add
AtomicCell::fetch_update
. (#704) - Support targets that do not have atomic CAS on stable Rust. (#698)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Bump
loom
dependency to version 0.5. (#686)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Make
loom
dependency optional. (#666)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Deprecate
AtomicCell::compare_and_swap
. UseAtomicCell::compare_exchange
instead. (#619) - Add
Parker::park_deadline
. (#563) - Improve implementation of
CachePadded
. (#636) - Add unstable support for
loom
. (#487)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Make
AtomicCell::is_lock_free
always const fn. (#600) - Fix a bug in
seq_lock_wide
. (#596) - Remove
const_fn
dependency. (#600) crossbeam-utils
no longer fails to compile if unable to determine rustc version. Instead, it now displays a warning. (#604)
Note: This release has been yanked. See GHSA-qc84-gqf4-9926 for details.
- Bump the minimum supported Rust version to 1.36.
- Remove deprecated
AtomicCell::get_mut()
andBackoff::is_complete()
methods. - Remove
alloc
feature. - Make
CachePadded::new()
const function. - Make
AtomicCell::is_lock_free()
const function at 1.46+. - Implement
From<T>
forAtomicCell<T>
.
- Fix bug in release (yanking 0.7.1)
- Bump
autocfg
dependency to version 1.0. (#460) - Make
AtomicCell
lockfree for u8, u16, u32, u64 sized values at 1.34+. (#454)
- Bump the minimum required version to 1.28.
- Fix breakage with nightly feature due to rust-lang/rust#65214.
- Apply
#[repr(transparent)]
toAtomicCell
. - Make
AtomicCell::new()
const function at 1.31+.
- Add
UnwindSafe
andRefUnwindSafe
impls forAtomicCell
. - Add
AtomicCell::as_ptr()
. - Add
AtomicCell::take()
. - Fix a bug in
AtomicCell::compare_exchange()
andAtomicCell::compare_and_swap()
. - Various documentation improvements.
- Rename
Backoff::is_complete()
toBackoff::is_completed()
.
- Add
WaitGroup
,ShardedLock
, andBackoff
. - Add
fetch_*
methods forAtomicCell<i128>
andAtomicCell<u128>
. - Expand documentation.
- Add
AtomicCell
. - Improve documentation.
- Add
Parker
. - Improve documentation.
- Fix a soundness bug in
Scope::spawn()
. - Remove the
T: 'scope
bound onScopedJoinHandle
.
- Move
AtomicConsume
toatomic
module. scope()
returns aResult
of thread joins.- Remove
spawn_unchecked
. - Fix a soundness bug due to incorrect lifetimes.
- Improve documentation.
- Support nested scoped spawns.
- Implement
Copy
,Hash
,PartialEq
, andEq
forCachePadded
. - Add
CachePadded::into_inner()
.
- Reorganize sub-modules and rename functions.
- Fix a documentation link.
CachePadded
supports types bigger than 64 bytes.- Fix a bug in scoped threads where unitialized memory was being dropped.
- Minimum required Rust version is now 1.25.
- Mark
load_consume
with#[inline]
.
load_consume
on ARM and AArch64.
- Add
join
for scoped thread API. - Add
load_consume
for atomic load-consume memory ordering. - Remove
AtomicOption
.
- Support Rust 1.12.1.
- Call
T::clone
when cloning aCachePadded<T>
.
- Add
use_std
feature.
- Add
nightly
feature. - Use
repr(align(64))
onCachePadded
with thenightly
feature. - Implement
Drop
forCachePadded<T>
. - Implement
Clone
forCachePadded<T>
. - Implement
From<T>
forCachePadded<T>
. - Implement better
Debug
forCachePadded<T>
. - Write more tests.
- Add this changelog.
- Change cache line length to 64 bytes.
- Remove
ZerosValid
.
- Old implementation of
CachePadded
fromcrossbeam
version 0.3.0