portable-atomic-util
Synchronization primitives built with portable-atomic.
0.2.7
92M downloads/mo
#849 most downloaded on crates.io
taiki-e/portable-atomic-util
What this package is like to depend on
Last release 4 months ago
16 Apr 2026
Ships unpredictably
gaps range from 1 weeks to 1.2 years
Nearly every release is documented
notes for 9 of 9 stable releases
5 versions withdrawn
withdrawn after publishing
4 years old
14 releases · first in 2023
3 releases in the last 12 months
see the full history below
Release timeline
14 releases · Jan 2023 to Apr 2026Releases
latest 14-
0.2.716 Apr 2026Release notes
Open source →- Implement serde serialization and deserialization for
Arc, gated behind "serde" feature. (#2, thanks @tommasoclini)
Release notes
Open source →- Implement serde serialization and deserialization for
Arc, gated behind "serde" feature. (#2, thanks @tommasoclini)
- Implement serde serialization and deserialization for
-
0.2.614 Mar 2026Release notes
Open source →portable-atomic-util has been extracted from the portable-atomic repository into its own repository: https://github.com/taiki-e/portable-atomic-util
Release notes
Open source →portable-atomic-util has been extracted from the portable-atomic repository into its own repository: https://github.com/taiki-e/portable-atomic-util
-
0.2.531 Jan 2026Release notes
Open source →-
Add
Arc::{new_zeroed,new_zeroed_slice}at Rust 1.36+. (align to the stdArcchange in Rust 1.92) (f8affb6, ae5aba7) -
Implement
DefaultforPin<Arc<T>: Default>. (align to the stdArcchange in Rust 1.91) (2d8d33c) -
Implement
From<&mut {[T],str}>forArc<{[T],str}>at Rust 1.36+. (align to the stdArcchange in Rust 1.84) (99640d6, ae5aba7) -
Implement
{AsFd, AsRawFd}forArc<T>on Trusty. (1b09ffb) -
Support slice-related methods that previously required Rust 1.44+ at Rust 1.36+. (ae5aba7)
-
Support
AsRawFd for Arc<T>implementation on Unix in all Rust versions. Previously, it was only for Rust 1.63+. (1b09ffb) -
Fix build error when building for HermitOS with
stdfeature in Rust 1.63-1.68. (1b09ffb) -
Documentation improvements.
-
Enable release immutability.
Release notes
Open source →-
Add
Arc::{new_zeroed,new_zeroed_slice}at Rust 1.36+. (align to the stdArcchange in Rust 1.92) (f8affb6, ae5aba7) -
Implement
DefaultforPin<Arc<T>: Default>. (align to the stdArcchange in Rust 1.91) (2d8d33c) -
Implement
From<&mut {[T],str}>forArc<{[T],str}>at Rust 1.36+. (align to the stdArcchange in Rust 1.84) (99640d6, ae5aba7) -
Implement
{AsFd, AsRawFd}forArc<T>on Trusty. (1b09ffb) -
Support slice-related methods that previously required Rust 1.44+ at Rust 1.36+. (ae5aba7)
-
Support
AsRawFd for Arc<T>implementation on Unix in all Rust versions. Previously, it was only for Rust 1.63+. (1b09ffb) -
Fix build error when building for HermitOS with
stdfeature in Rust 1.63-1.68. (1b09ffb) -
Documentation improvements.
-
Enable release immutability.
-
-
0.2.423 Nov 2024Release notes
Open source →-
Add unstable
portable_atomic_unstable_coerce_unsizedcfg (requires Rust nightly). (#195, thanks @brodycj) -
Respect
RUSTC_BOOTSTRAP=-1recently added in nightly in rustc version detection. (5b2847a)
Release notes
Open source →-
Add unstable
portable_atomic_unstable_coerce_unsizedcfg (requires Rust nightly). (#195, thanks @brodycj) -
Respect
RUSTC_BOOTSTRAP=-1recently added in nightly in rustc version detection. (5b2847a)
-
-
0.2.317 Oct 2024Release notes
Open source →-
Add
Arc::{new_uninit,assume_init}at Rust 1.36+ andArc::new_uninit_sliceat Rust 1.44+. (align to the stdArcchange in Rust 1.82) (362dc9a) -
Support
make_mutonArc<[T]>andArc<str>at Rust 1.36+. (align to the stdArcchange in Rust 1.81) (362dc9a)
Release notes
Open source →-
Add
Arc::{new_uninit,assume_init}at Rust 1.36+ andArc::new_uninit_sliceat Rust 1.44+. (align to the stdArcchange in Rust 1.82) (362dc9a) -
Support
make_mutonArc<[T]>andArc<str>at Rust 1.36+. (align to the stdArcchange in Rust 1.81) (362dc9a)
-
-
0.2.211 Jul 2024 -
0.2.122 Jun 2024 withdrawnRelease notes
Open source →-
Support
impl Error for Arc<T: Error>in no-std at Rust 1.81+. (30b9f90) -
Implement
DefaultforArc<[T]>andArc<str>at Rust 1.51+. (align to the stdArcchange in Rust 1.80) (c6ee296) -
Implement
{AsFd, AsRawFd}forArc<T>on HermitOS. (b778244)
Release notes
Open source →Note: This release has been yanked due to an issue fixed in 0.2.2.
-
Support
impl Error for Arc<T: Error>in no-std at Rust 1.81+. (30b9f90) -
Implement
DefaultforArc<[T]>andArc<str>at Rust 1.51+. (align to the stdArcchange in Rust 1.80) (c6ee296) -
Implement
{AsFd, AsRawFd}forArc<T>on HermitOS. (b778244)
-
-
0.2.007 May 2024Release notes
Open source →-
Rewrite
Arcbased onstd::sync::Arc's implementation. (#142)This fixes accidental API differences with std (#139, #140) and adds many missing APIs compared to std:
- Add
Arc::{downcast, into_inner, make_mut, new_cyclic}(#142) - Implement
{fmt::Display, fmt::Pointer, Error, From<T>, From<Box<T>>, From<Cow<'a,T>>, AsFd, AsRawFd, AsHandle, AsSocket}forArc<T>(#142, 78690d7, aba0930) - Implement
{From<&[T]>, From<Vec<T>>, From<[T; N]>, FromIterator<T>}forArc<[T]>(#142, 5e9f693) - Implement
TryFrom<Arc<[T]>>forArc<[T; N]>(#142) - Implement
From<Arc<str>>forArc<[u8]>(#142) - Implement
{From<&str>, From<String>}forArc<str>(#142) - Implement
{Read, Write, Seek}forArc<File>(591ece5) - Remove
T: UnwindSafebound fromimpl UnwindSafe for Arc<T>(#142)
- Add
-
Add
task::Wake. (#145)This is equivalent to
std::task::Wake, but usingportable_atomic_util::Arcas a reference-counted pointer. -
Respect
RUSTC_WRAPPERin rustc version detection.
Release notes
Open source →-
Rewrite
Arcbased onstd::sync::Arc's implementation. (#142)This fixes accidental API differences with std (#139, #140) and adds many missing APIs compared to std:
- Add
Arc::{downcast, into_inner, make_mut, new_cyclic}(#142) - Implement
{fmt::Display, fmt::Pointer, Error, From<T>, From<Box<T>>, From<Cow<'a,T>>, AsFd, AsRawFd, AsHandle, AsSocket}forArc<T>(#142, 78690d7, aba0930) - Implement
{From<&[T]>, From<Vec<T>>, From<[T; N]>, FromIterator<T>}forArc<[T]>(#142, 5e9f693) - Implement
TryFrom<Arc<[T]>>forArc<[T; N]>(#142) - Implement
From<Arc<str>>forArc<[u8]>(#142) - Implement
{From<&str>, From<String>}forArc<str>(#142) - Implement
{Read, Write, Seek}forArc<File>(591ece5) - Remove
T: UnwindSafebound fromimpl UnwindSafe for Arc<T>(#142)
- Add
-
Add
task::Wake. (#145)This is equivalent to
std::task::Wake, but usingportable_atomic_util::Arcas a reference-counted pointer. -
Respect
RUSTC_WRAPPERin rustc version detection.
-
-
0.1.517 Dec 2023Release notes
Open source →Release notes
Open source →- Improve offset calculation in
Arc::{into_raw,as_ptr,from_ptr}. (#141, thanks @gtsiam)
- Improve offset calculation in
-
0.1.416 Dec 2023Release notes
Open source →- Fix a bug where
Arc::{into_raw,as_ptr}returned invalid pointers for larger alignment types. (#138, thanks @notgull)
- Fix a bug where
-
0.1.306 May 2023 withdrawnRelease notes
Open source →Note: This release has been yanked due to a bug fixed in 0.1.4.
- Enable
portable-atomic'srequire-casfeature to display helpful error messages to users on targets requiring additional action on the user side to provide atomic CAS. (#100)
- Enable
-
0.1.204 Apr 2023 withdrawn -
0.1.124 Mar 2023 withdrawnRelease notes
Open source →Note: This release has been yanked due to a bug fixed in 0.1.4.
-
Prevent weak counter overflow in
Arc::downgrade. (#83)This fixes a potential unsoundness recently found in the standard library's
Arc.
-
-
0.1.015 Jan 2023 withdrawnRelease notes
Open source →Note: This release has been yanked due to a bug fixed in 0.1.4.
Initial release