[package] name = "bevy_ecs" version = "0.16.0" edition = "2024" description = "Bevy Engine's entity component system" homepage = "https://bevyengine.org" repository = "https://github.com/bevyengine/bevy" license = "MIT OR Apache-2.0" keywords = ["ecs", "game", "bevy"] categories = ["game-engines", "data-structures"] rust-version = "1.85.0" [features] default = ["std", "bevy_reflect", "async_executor", "backtrace"] # Functionality ## Enables multithreading support. Schedules will attempt to run systems on ## multiple threads whenever possible. multi_threaded = ["bevy_tasks/multi_threaded", "dep:arrayvec"] ## Adds serialization support through `serde`. serialize = [ "dep:serde", "bevy_utils/serde", "bevy_platform/serialize", "indexmap/serde", ] ## Adds runtime reflection support using `bevy_reflect`. bevy_reflect = ["dep:bevy_reflect"] ## Extends reflection support to functions. reflect_functions = ["bevy_reflect", "bevy_reflect/functions"] ## Use the configurable global error handler as the default error handler. ## ## This is typically used to turn panics from the ECS into loggable errors. ## This may be useful for production builds, ## but can result in a measurable performance impact, especially for commands. configurable_error_handler = [] ## Enables automatic backtrace capturing in BevyError backtrace = ["std"] # Debugging Features ## Enables `tracing` integration, allowing spans and other metrics to be reported ## through that framework. trace = ["std", "dep:tracing"] ## Enables a more detailed set of traces which may be noisy if left on by default. detailed_trace = ["trace"] ## Provides system stepping support, allowing them to be paused, stepped, and ## other debug operations which can help with diagnosing certain behaviors. bevy_debug_stepping = [] ## Provides more detailed tracking of the cause of various effects within the ECS. ## This will often provide more detailed error messages. track_location = [] # Executor Backend ## Uses `async-executor` as a task execution backend. ## This backend is incompatible with `no_std` targets. async_executor = ["std", "bevy_tasks/async_executor"] # Platform Compatibility ## Allows access to the `std` crate. Enabling this feature will prevent compilation ## on `no_std` targets, but provides access to certain additional features on ## supported platforms. std = [ "bevy_reflect?/std", "bevy_tasks/std", "bevy_utils/std", "bitflags/std", "concurrent-queue/std", "disqualified/alloc", "fixedbitset/std", "indexmap/std", "serde?/std", "nonmax/std", "arrayvec?/std", "log/std", "bevy_platform/std", ] ## `critical-section` provides the building blocks for synchronization primitives ## on all platforms, including `no_std`. critical-section = [ "bevy_tasks/critical-section", "bevy_platform/critical-section", "bevy_reflect?/critical-section", ] [dependencies] bevy_ptr = { path = "../bevy_ptr", version = "0.16.0" } bevy_reflect = { path = "../bevy_reflect", version = "0.16.0", features = [ "smallvec", ], default-features = false, optional = true } bevy_tasks = { path = "../bevy_tasks", version = "0.16.0", default-features = false } bevy_utils = { path = "../bevy_utils", version = "0.16.0", default-features = false, features = [ "alloc", ] } bevy_ecs_macros = { path = "macros", version = "0.16.0" } bevy_platform = { path = "../bevy_platform", version = "0.16.0", default-features = false, features = [ "alloc", ] } bitflags = { version = "2.3", default-features = false } disqualified = { version = "1.0", default-features = false } fixedbitset = { version = "0.5", default-features = false } serde = { version = "1", default-features = false, features = [ "alloc", "serde_derive", ], optional = true } thiserror = { version = "2", default-features = false } derive_more = { version = "1", default-features = false, features = [ "from", "display", "into", "as_ref", ] } nonmax = { version = "0.5", default-features = false } arrayvec = { version = "0.7.4", default-features = false, optional = true } smallvec = { version = "1", features = ["union", "const_generics"] } indexmap = { version = "2.5.0", default-features = false } variadics_please = { version = "1.1", default-features = false } tracing = { version = "0.1", default-features = false, optional = true } log = { version = "0.4", default-features = false } bumpalo = "3" concurrent-queue = { version = "2.5.0", default-features = false } [target.'cfg(not(all(target_has_atomic = "8", target_has_atomic = "16", target_has_atomic = "32", target_has_atomic = "64", target_has_atomic = "ptr")))'.dependencies] concurrent-queue = { version = "2.5.0", default-features = false, features = [ "portable-atomic", ] } [dev-dependencies] rand = "0.8" static_assertions = "1.1.0" serde_test = "1.0" [[example]] name = "events" path = "examples/events.rs" [[example]] name = "resources" path = "examples/resources.rs" [[example]] name = "change_detection" path = "examples/change_detection.rs" [lints] workspace = true [package.metadata.docs.rs] rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"] all-features = true