Skip to content
This repository was archived by the owner on Jan 4, 2026. It is now read-only.

Commit 621ea44

Browse files
authored
Remove cas-atomics feature, automatically detect CAS (#5)
* Switch to automatically detecting CAS support * Remove cas-atomics features entirely
1 parent 072873e commit 621ea44

5 files changed

Lines changed: 19 additions & 19 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "bbq2"
3-
version = "0.3.0"
3+
version = "0.4.0"
44
description = "A SPSC, lockless, no_std, thread safe, queue, based on BipBuffers"
55
repository = "https://github.com/jamesmunns/bbq2"
66
authors = ["James Munns <james@onevariable.com>"]
@@ -38,13 +38,11 @@ version = "1.0"
3838
features = ["macros", "rt", "time"]
3939

4040
[features]
41+
# NOTE: CAS atomics are switched using `#[cfg(target_has_atomic = "ptr")]`
4142
default = [
42-
"cas-atomics",
4343
"maitake-sync-0_2",
4444
"critical-section",
4545
]
46-
47-
cas-atomics = []
4846
critical-section = [
4947
"dep:critical-section",
5048
]

src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ mod test {
3939
},
4040
};
4141

42-
#[cfg(all(feature = "cas-atomics", feature = "std"))]
42+
#[cfg(all(target_has_atomic = "ptr", feature = "std"))]
4343
#[test]
4444
fn ux() {
4545
use crate::traits::{notifier::blocking::Blocking, storage::BoxedSlice};
@@ -59,7 +59,7 @@ mod test {
5959
let _ = bbq3.stream_consumer();
6060
}
6161

62-
#[cfg(feature = "cas-atomics")]
62+
#[cfg(target_has_atomic = "ptr")]
6363
#[test]
6464
fn smoke() {
6565
use crate::traits::notifier::blocking::Blocking;
@@ -85,7 +85,7 @@ mod test {
8585
assert!(cons.read().is_err());
8686
}
8787

88-
#[cfg(feature = "cas-atomics")]
88+
#[cfg(target_has_atomic = "ptr")]
8989
#[test]
9090
fn smoke_framed() {
9191
use crate::traits::notifier::blocking::Blocking;
@@ -107,7 +107,7 @@ mod test {
107107
assert!(cons.read().is_err());
108108
}
109109

110-
#[cfg(feature = "cas-atomics")]
110+
#[cfg(target_has_atomic = "ptr")]
111111
#[test]
112112
fn framed_misuse() {
113113
use crate::traits::notifier::blocking::Blocking;

src/nicknames.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
#[cfg(feature = "std")]
2525
use crate::queue::ArcBBQueue;
26-
#[cfg(feature = "cas-atomics")]
26+
#[cfg(target_has_atomic = "ptr")]
2727
use crate::traits::coordination::cas::AtomicCoord;
2828
#[cfg(feature = "critical-section")]
2929
use crate::traits::coordination::cs::CsCoord;
@@ -43,11 +43,11 @@ pub type Jerk<const N: usize> = BBQueue<Inline<N>, CsCoord, Blocking>;
4343
pub type Memphis<const N: usize, A> = BBQueue<Inline<N>, CsCoord, A>;
4444

4545
/// Inline Storage, Atomics, Blocking, Borrowed
46-
#[cfg(feature = "cas-atomics")]
46+
#[cfg(target_has_atomic = "ptr")]
4747
pub type Churrasco<const N: usize> = BBQueue<Inline<N>, AtomicCoord, Blocking>;
4848

4949
/// Inline Storage, Atomics, Async, Borrowed
50-
#[cfg(feature = "cas-atomics")]
50+
#[cfg(target_has_atomic = "ptr")]
5151
pub type Texas<const N: usize, A> = BBQueue<Inline<N>, AtomicCoord, A>;
5252

5353
/// Heap Buffer, Critical Section, Blocking, Borrowed
@@ -59,11 +59,11 @@ pub type Braai = BBQueue<BoxedSlice, CsCoord, Blocking>;
5959
pub type SiuMei<A> = BBQueue<BoxedSlice, CsCoord, A>;
6060

6161
/// Heap Buffer, Atomics, Blocking, Borrowed
62-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
62+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
6363
pub type YakiNiku = BBQueue<BoxedSlice, AtomicCoord, Blocking>;
6464

6565
/// Heap Buffer, Atomics, Async, Borrowed
66-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
66+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
6767
pub type Tandoori<A> = BBQueue<BoxedSlice, AtomicCoord, A>;
6868

6969
/// Inline Storage, Critical Section, Blocking, Arc
@@ -75,11 +75,11 @@ pub type Asado<const N: usize> = ArcBBQueue<Inline<N>, CsCoord, Blocking>;
7575
pub type Carolina<const N: usize, A> = ArcBBQueue<Inline<N>, CsCoord, A>;
7676

7777
/// Inline Storage, Atomics, Blocking, Arc
78-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
78+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
7979
pub type Barbacoa<const N: usize> = ArcBBQueue<Inline<N>, AtomicCoord, Blocking>;
8080

8181
/// Inline Storage, Atomics, Async, Arc
82-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
82+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
8383
pub type KansasCity<const N: usize, A> = ArcBBQueue<Inline<N>, AtomicCoord, A>;
8484

8585
/// Heap Buffer, Critical Section, Blocking, Arc
@@ -91,9 +91,9 @@ pub type Kebab = ArcBBQueue<BoxedSlice, CsCoord, Blocking>;
9191
pub type Satay<A> = ArcBBQueue<BoxedSlice, CsCoord, A>;
9292

9393
/// Heap Buffer, Atomics, Blocking, Arc
94-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
94+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
9595
pub type GogiGui = ArcBBQueue<BoxedSlice, AtomicCoord, Blocking>;
9696

9797
/// Heap Buffer, Atomics, Async, Arc
98-
#[cfg(all(feature = "std", feature = "cas-atomics"))]
98+
#[cfg(all(feature = "std", target_has_atomic = "ptr"))]
9999
pub type Lechon<A> = ArcBBQueue<BoxedSlice, AtomicCoord, A>;

src/traits/coordination/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
//! Unless you are on an embedded target without Compare and Swap atomics, e.g.
66
//! `cortex-m0`/`thumbv6m`, you almost certainly want to use the [`cas`] version
77
//! of coordination.
8+
//!
9+
//! The `cas` module is toggled automatically based on `#[cfg(target_has_atomic = "ptr")]`.
810
9-
#[cfg(feature = "cas-atomics")]
11+
#[cfg(target_has_atomic = "ptr")]
1012
pub mod cas;
1113

1214
#[cfg(feature = "critical-section")]

0 commit comments

Comments
 (0)