[package]
edition = "2021"
rust-version = "1.87"
name = "syren"
version = "0.6.0"
build = false
include = [
"src/**/*.rs",
"examples/**/*.rs",
"examples/**/*.yaml",
"examples/**/*.md",
"tests/**/*.rs",
"benches/**/*.rs",
"CHANGELOG.md",
"README.md",
"LICENSE",
"CITATION.cff",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A parallel Rust framework for agent-based models with ECS storage, scheduling, messaging, environments, and optional GPU execution."
homepage = "https://github.com/AshvinPerera/Syren-ABM-Framework"
documentation = "https://docs.rs/syren"
readme = "README.md"
keywords = [
"agent-based",
"simulation",
"ecs",
"parallel",
"science",
]
categories = [
"science",
"simulation",
]
license = "MIT"
repository = "https://github.com/AshvinPerera/Syren-ABM-Framework"
[package.metadata.docs.rs]
all-features = true
[features]
agents = []
all = [
"gpu",
"agents",
"environment",
"profiling",
"messaging",
"messaging_gpu",
"model",
]
default = []
environment = []
gpu = [
"dep:wgpu",
"dep:bytemuck",
"dep:pollster",
]
gpu_profiling = [
"gpu",
"profiling",
]
messaging = []
messaging_gpu = [
"messaging",
"gpu",
]
model = [
"agents",
"environment",
]
profiling = []
[lib]
name = "syren"
crate-type = ["rlib"]
path = "src/lib.rs"
[[example]]
name = "first_model"
path = "examples/first_model.rs"
required-features = ["model"]
[[example]]
name = "macroeconomy"
path = "examples/macroeconomy/main.rs"
required-features = [
"model",
"messaging",
]
[[example]]
name = "sugarscape"
path = "examples/sugarscape/sugarscape.rs"
[[test]]
name = "closed_market_economy"
path = "tests/closed_market_economy.rs"
[[test]]
name = "economy_messaging_gpu"
path = "tests/economy_messaging_gpu.rs"
[[test]]
name = "engine_boundary_lifecycle"
path = "tests/engine_boundary_lifecycle.rs"
[[test]]
name = "entity_aware_iteration"
path = "tests/entity_aware_iteration.rs"
[[test]]
name = "gpu_dispatch_params"
path = "tests/gpu_dispatch_params.rs"
[[test]]
name = "macroeconomy"
path = "examples/macroeconomy/tests.rs"
required-features = [
"model",
"messaging",
]
[[test]]
name = "mem_layout"
path = "tests/mem_layout.rs"
[[test]]
name = "scheduler_graph"
path = "tests/scheduler_graph.rs"
[[test]]
name = "sugarscape_axtell"
path = "tests/sugarscape_axtell.rs"
[[bench]]
name = "common"
path = "benches/common.rs"
[[bench]]
name = "environment_dirty_tracking"
path = "benches/environment_dirty_tracking.rs"
harness = false
required-features = ["environment"]
[[bench]]
name = "gpu_bind_group_creation"
path = "benches/gpu_bind_group_creation.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_common"
path = "benches/gpu_common.rs"
[[bench]]
name = "gpu_dispatch"
path = "benches/gpu_dispatch.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_dispatch_poll"
path = "benches/gpu_dispatch_poll.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_message_finalisation"
path = "benches/gpu_message_finalisation.rs"
harness = false
required-features = [
"model",
"messaging_gpu",
]
[[bench]]
name = "gpu_readback"
path = "benches/gpu_readback.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_startup"
path = "benches/gpu_startup.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "gpu_tick"
path = "benches/gpu_tick.rs"
harness = false
required-features = ["gpu"]
[[bench]]
name = "iterate"
path = "benches/iterate.rs"
harness = false
[[bench]]
name = "message_specialisations"
path = "benches/message_specialisations.rs"
harness = false
required-features = ["messaging"]
[[bench]]
name = "messaging_finalisation"
path = "benches/messaging_finalisation.rs"
harness = false
required-features = ["messaging"]
[[bench]]
name = "model_agent"
path = "benches/model_agent.rs"
harness = false
required-features = ["model"]
[[bench]]
name = "parallel_scaling"
path = "benches/parallel_scaling.rs"
harness = false
[[bench]]
name = "query_matching"
path = "benches/query_matching.rs"
harness = false
[[bench]]
name = "reduce"
path = "benches/reduce.rs"
harness = false
[[bench]]
name = "review_common"
path = "benches/review_common.rs"
[[bench]]
name = "scheduler_execution"
path = "benches/scheduler_execution.rs"
harness = false
[[bench]]
name = "scheduler_packing"
path = "benches/scheduler_packing.rs"
harness = false
[[bench]]
name = "spawn"
path = "benches/spawn.rs"
harness = false
[[bench]]
name = "structural_mutation"
path = "benches/structural_mutation.rs"
harness = false
[[bench]]
name = "tick"
path = "benches/tick.rs"
harness = false
[dependencies.bytemuck]
version = "1.16"
features = ["derive"]
optional = true
[dependencies.parking_lot]
version = "0.12"
features = ["arc_lock"]
[dependencies.pollster]
version = "1.0.1"
optional = true
[dependencies.rayon]
version = "1.7.0"
[dependencies.smallvec]
version = "1.15.1"
[dependencies.thiserror]
version = "2"
[dependencies.wgpu]
version = "29.0.1"
optional = true
[dev-dependencies.bytemuck]
version = "1.16"
features = ["derive"]
[dev-dependencies.criterion]
version = "0.8.1"
[dev-dependencies.pollster]
version = "1.0.1"
[dev-dependencies.rayon]
version = "1.7.0"
[dev-dependencies.wgpu]
version = "29.0.1"