diff --git a/Cargo.toml b/Cargo.toml index 8a73852..120565b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,9 @@ name = "consciousness" version.workspace = true edition.workspace = true +[features] +nightly-diagnostics = [] + [dependencies] anyhow = "1" html2md = "0.2" diff --git a/src/bin/consciousness.rs b/src/bin/consciousness.rs index 21e5087..b2303f4 100644 --- a/src/bin/consciousness.rs +++ b/src/bin/consciousness.rs @@ -1,4 +1,4 @@ -#![feature(panic_backtrace_config)] +#![cfg_attr(feature = "nightly-diagnostics", feature(panic_backtrace_config))] #![warn(unreachable_pub)] fn main() { @@ -13,6 +13,8 @@ fn main() { if std::env::var_os("RUST_BACKTRACE").is_none() { unsafe { std::env::set_var("RUST_BACKTRACE", "1"); } } + + #[cfg(feature = "nightly-diagnostics")] std::panic::set_backtrace_style(std::panic::BacktraceStyle::Short); // rustls 0.23 requires an explicit process-wide CryptoProvider diff --git a/src/lib.rs b/src/lib.rs index ccb4333..91ff333 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -#![feature(async_fn_track_caller)] +#![cfg_attr(feature = "nightly-diagnostics", feature(async_fn_track_caller))] // consciousness — unified crate for memory, agents, and subconscious processes // diff --git a/src/locks.rs b/src/locks.rs index dda4cb2..fe02434 100644 --- a/src/locks.rs +++ b/src/locks.rs @@ -114,7 +114,7 @@ impl TrackedMutex { Self { inner: Mutex::new(value) } } - #[track_caller] + #[cfg_attr(feature = "nightly-diagnostics", track_caller)] pub async fn lock(&self) -> TrackedMutexGuard<'_, T> { let location = Location::caller(); let guard = self.inner.lock().await; @@ -125,7 +125,7 @@ impl TrackedMutex { } } - #[track_caller] + #[cfg_attr(feature = "nightly-diagnostics", track_caller)] pub fn try_lock(&self) -> Result, tokio::sync::TryLockError> { let location = Location::caller(); let guard = self.inner.try_lock()?; @@ -171,7 +171,7 @@ impl TrackedRwLock { Self { inner: RwLock::new(value) } } - #[track_caller] + #[cfg_attr(feature = "nightly-diagnostics", track_caller)] pub async fn read(&self) -> TrackedRwLockReadGuard<'_, T> { let location = Location::caller(); let guard = self.inner.read().await; @@ -182,7 +182,7 @@ impl TrackedRwLock { } } - #[track_caller] + #[cfg_attr(feature = "nightly-diagnostics", track_caller)] pub async fn write(&self) -> TrackedRwLockWriteGuard<'_, T> { let location = Location::caller(); let guard = self.inner.write().await; diff --git a/src/main.rs b/src/main.rs index f13448c..88b8703 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ -#![feature(panic_backtrace_config)] +#![cfg_attr(feature = "nightly-diagnostics", feature(panic_backtrace_config))] // poc-memory: graph-structured memory for AI assistants // @@ -464,6 +464,7 @@ impl Run for AdminCmd { #[tokio::main] async fn main() { + #[cfg(feature = "nightly-diagnostics")] std::panic::set_backtrace_style(std::panic::BacktraceStyle::Short); // Handle --help ourselves for expanded subcommand display @@ -495,4 +496,3 @@ async fn main() { process::exit(1); } } -