Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .config/hakari.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ platforms = [
# feature) into `workspace-hack`, which propagates into every member that
# depends on `workspace-hack` regardless of feature selection.
[final-excludes]
# `nexus` is the no_std kernel — it must not depend on the (std) workspace-hack.
# hakari removes the edge; `hakari verify` enforces its absence. (#279)
workspace-members = ["nexus"]
third-party = [
{ name = "futures-core" },
]
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ serde_json = "1.0.149"
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "postgres", "macros"] }
static_assertions = "1.1.0"
tempfile = "3"
thiserror = "2.0.18"
thiserror = { version = "2.0.18", default-features = false }
tokio = { version = "1.52.1", features = ["full"] }
tokio-stream = "0.1"

Expand Down
2 changes: 1 addition & 1 deletion crates/nexus-fjall/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ fjall = { workspace = true }
futures.workspace = true
nexus = { version = "0.1.0", path = "../nexus" }
nexus-store = { version = "0.1.0", path = "../nexus-store", features = ["subscription"] }
thiserror = { workspace = true }
thiserror = { workspace = true, features = ["std"] }
tokio = { workspace = true, features = ["sync"] }
workspace-hack = { version = "0.1", path = "../workspace-hack" }

Expand Down
2 changes: 1 addition & 1 deletion crates/nexus-postgres/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ futures = { workspace = true }
nexus = { version = "0.1.0", path = "../nexus" }
nexus-store = { version = "0.1.0", path = "../nexus-store", features = ["subscription"] }
sqlx = { workspace = true }
thiserror = { workspace = true }
thiserror = { workspace = true, features = ["std"] }
tokio = { workspace = true, features = ["rt", "sync"] }
workspace-hack = { version = "0.1", path = "../workspace-hack" }

Expand Down
2 changes: 1 addition & 1 deletion crates/nexus-store/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ parking_lot = { workspace = true, optional = true }
rkyv = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
serde_json = { workspace = true, optional = true }
thiserror = { workspace = true }
thiserror = { workspace = true, features = ["std"] }
tokio = { workspace = true, features = ["sync"], optional = true }
workspace-hack = { version = "0.1", path = "../workspace-hack" }

Expand Down
7 changes: 5 additions & 2 deletions crates/nexus/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ categories = ["data-structures"]
arrayvec = { workspace = true }
nexus-macros = { version = "0.1.0", path = "../nexus-macros", optional = true }
thiserror = { workspace = true }
workspace-hack = { version = "0.1", path = "../workspace-hack" }

[dev-dependencies]
criterion = { workspace = true }
Expand All @@ -31,7 +30,11 @@ thiserror = { workspace = true }
trybuild = "1"

[features]
default = []
default = ["std"]
# Additive: enabling `std` only ADDS (the std::error::Error bridge via
# thiserror); disabling it (`--no-default-features`) yields a no_std +
# core::error::Error kernel. (#279)
std = ["thiserror/std"]
derive = ["dep:nexus-macros"]
testing = []

Expand Down
10 changes: 5 additions & 5 deletions crates/nexus/src/aggregate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ use crate::event::DomainEvent;
use crate::events::Events;
use crate::id::Id;
use crate::version::Version;
use std::error::Error;
use std::fmt;
use std::fmt::Debug;
use std::mem;
use std::num::NonZeroUsize;
use core::error::Error;
use core::fmt;
use core::fmt::Debug;
use core::mem;
use core::num::NonZeroUsize;

/// State of an event-sourced aggregate. Mutated by applying domain events.
///
Expand Down
4 changes: 2 additions & 2 deletions crates/nexus/src/id.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::fmt::{Debug, Display};
use std::hash::Hash;
use core::fmt::{Debug, Display};
use core::hash::Hash;

use crate::ErrorId;

Expand Down
7 changes: 7 additions & 0 deletions crates/nexus/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
#![cfg_attr(not(feature = "std"), no_std)]

// The production kernel is pure `core` — no allocator required on-device.
// `alloc` is pulled in only for the test fixture and unit tests.
#[cfg(any(test, feature = "testing"))]
extern crate alloc;

mod aggregate;
mod error;
mod error_id;
Expand Down
2 changes: 1 addition & 1 deletion crates/nexus/src/message.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
use std::fmt::Debug;
use core::fmt::Debug;

pub trait Message: Send + Sync + Debug + 'static {}
1 change: 1 addition & 0 deletions crates/nexus/src/testing.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ use crate::event::DomainEvent;
use crate::events::Events;
use crate::saga::{React, Saga};
use crate::version::Version;
use alloc::vec::Vec;
use core::fmt::Debug;

/// Entry point. Carries the id used to construct the root for replay.
Expand Down
6 changes: 3 additions & 3 deletions crates/nexus/src/version.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::fmt;
use std::iter::FusedIterator;
use std::num::NonZeroU64;
use core::fmt;
use core::iter::FusedIterator;
use core::num::NonZeroU64;

/// A compile-checked [`Version`] literal.
///
Expand Down
2 changes: 2 additions & 0 deletions crates/workspace-hack/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ sha2 = { version = "0.10" }
smallvec = { version = "1", default-features = false, features = ["const_generics", "serde"] }
sqlx-core = { version = "0.8", features = ["_rt-tokio", "any", "json", "migrate", "offline"] }
sqlx-postgres = { version = "0.8", default-features = false, features = ["migrate", "offline"] }
thiserror = { version = "2" }
tokio = { version = "1", features = ["full"] }
trybuild = { version = "1", default-features = false, features = ["diff"] }
zerocopy = { version = "0.8", default-features = false, features = ["derive", "simd"] }
Expand All @@ -55,6 +56,7 @@ smallvec = { version = "1", default-features = false, features = ["const_generic
sqlx-core = { version = "0.8", features = ["_rt-tokio", "any", "json", "migrate", "offline"] }
sqlx-postgres = { version = "0.8", default-features = false, features = ["migrate", "offline"] }
syn = { version = "2", features = ["extra-traits", "fold", "full", "visit", "visit-mut"] }
thiserror = { version = "2" }
tokio = { version = "1", features = ["full"] }
trybuild = { version = "1", default-features = false, features = ["diff"] }
zerocopy = { version = "0.8", default-features = false, features = ["derive", "simd"] }
Expand Down
Loading
Loading