syren 0.6.0

A parallel Rust framework for agent-based models with ECS storage, scheduling, messaging, environments, and optional GPU execution.
Documentation
# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[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"