
# Objective - Fixes #15460 (will open new issues for further `no_std` efforts) - Supersedes #17715 ## Solution - Threaded in new features as required - Made certain crates optional but default enabled - Removed `compile-check-no-std` from internal `ci` tool since GitHub CI can now simply check `bevy` itself now - Added CI task to check `bevy` on `thumbv6m-none-eabi` to ensure `portable-atomic` support is still valid [^1] [^1]: This may be controversial, since it could be interpreted as implying Bevy will maintain support for `thumbv6m-none-eabi` going forward. In reality, just like `x86_64-unknown-none`, this is a [canary](https://en.wiktionary.org/wiki/canary_in_a_coal_mine) target to make it clear when `portable-atomic` no longer works as intended (fixing atomic support on atomically challenged platforms). If a PR comes through and makes supporting this class of platforms impossible, then this CI task can be removed. I however wager this won't be a problem. ## Testing - CI --- ## Release Notes Bevy now has support for `no_std` directly from the `bevy` crate. Users can disable default features and enable a new `default_no_std` feature instead, allowing `bevy` to be used in `no_std` applications and libraries. ```toml # Bevy for `no_std` platforms bevy = { version = "0.16", default-features = false, features = ["default_no_std"] } ``` `default_no_std` enables certain required features, such as `libm` and `critical-section`, and as many optional crates as possible (currently just `bevy_state`). For atomically-challenged platforms such as the Raspberry Pi Pico, `portable-atomic` will be used automatically. For library authors, we recommend depending on `bevy` with `default-features = false` to allow `std` and `no_std` users to both depend on your crate. Here are some recommended features a library crate may want to expose: ```toml [features] # Most users will be on a platform which has `std` and can use the more-powerful `async_executor`. default = ["std", "async_executor"] # Features for typical platforms. std = ["bevy/std"] async_executor = ["bevy/async_executor"] # Features for `no_std` platforms. libm = ["bevy/libm"] critical-section = ["bevy/critical-section"] [dependencies] # We disable default features to ensure we don't accidentally enable `std` on `no_std` targets, for example. bevy = { version = "0.16", default-features = false } ``` While this is verbose, it gives the maximum control to end-users to decide how they wish to use Bevy on their platform. We encourage library authors to experiment with `no_std` support. For libraries relying exclusively on `bevy` and no other dependencies, it may be as simple as adding `#![no_std]` to your `lib.rs` and exposing features as above! Bevy can also provide many `std` types, such as `HashMap`, `Mutex`, and `Instant` on all platforms. See `bevy::platform_support` for details on what's available out of the box! ## Migration Guide - If you were previously relying on `bevy` with default features disabled, you may need to enable the `std` and `async_executor` features. - `bevy_reflect` has had its `bevy` feature removed. If you were relying on this feature, simply enable `smallvec` and `smol_str` instead. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
417 lines
14 KiB
TOML
417 lines
14 KiB
TOML
[package]
|
|
name = "bevy_internal"
|
|
version = "0.16.0-dev"
|
|
edition = "2024"
|
|
description = "An internal Bevy crate used to facilitate optional dynamic linking via the 'dynamic_linking' feature"
|
|
homepage = "https://bevyengine.org"
|
|
repository = "https://github.com/bevyengine/bevy"
|
|
license = "MIT OR Apache-2.0"
|
|
keywords = ["game", "engine", "gamedev", "graphics", "bevy"]
|
|
categories = ["game-engines", "graphics", "gui", "rendering"]
|
|
|
|
[features]
|
|
trace = [
|
|
"bevy_app/trace",
|
|
"bevy_asset?/trace",
|
|
"bevy_core_pipeline?/trace",
|
|
"bevy_ecs/trace",
|
|
"bevy_log/trace",
|
|
"bevy_pbr?/trace",
|
|
"bevy_render?/trace",
|
|
"bevy_winit?/trace",
|
|
]
|
|
trace_chrome = ["bevy_log/tracing-chrome"]
|
|
trace_tracy = ["bevy_render?/tracing-tracy", "bevy_log/tracing-tracy"]
|
|
trace_tracy_memory = ["bevy_log/trace_tracy_memory"]
|
|
detailed_trace = ["bevy_ecs/detailed_trace", "bevy_render?/detailed_trace"]
|
|
|
|
sysinfo_plugin = ["bevy_diagnostic/sysinfo_plugin"]
|
|
|
|
# Texture formats that have specific rendering support (HDR enabled by default)
|
|
basis-universal = ["bevy_image/basis-universal", "bevy_render/basis-universal"]
|
|
dds = [
|
|
"bevy_image/dds",
|
|
"bevy_render/dds",
|
|
"bevy_core_pipeline/dds",
|
|
"bevy_gltf?/dds",
|
|
]
|
|
exr = ["bevy_image/exr", "bevy_render/exr"]
|
|
hdr = ["bevy_image/hdr", "bevy_render/hdr"]
|
|
ktx2 = ["bevy_image/ktx2", "bevy_render/ktx2"]
|
|
|
|
# For ktx2 supercompression
|
|
zlib = ["bevy_image/zlib"]
|
|
zstd = ["bevy_image/zstd"]
|
|
|
|
# Image format support (PNG enabled by default)
|
|
bmp = ["bevy_image/bmp"]
|
|
ff = ["bevy_image/ff"]
|
|
gif = ["bevy_image/gif"]
|
|
ico = ["bevy_image/ico"]
|
|
jpeg = ["bevy_image/jpeg"]
|
|
png = ["bevy_image/png"]
|
|
pnm = ["bevy_image/pnm"]
|
|
qoi = ["bevy_image/qoi"]
|
|
tga = ["bevy_image/tga"]
|
|
tiff = ["bevy_image/tiff"]
|
|
webp = ["bevy_image/webp"]
|
|
|
|
# Enable SPIR-V passthrough
|
|
spirv_shader_passthrough = ["bevy_render/spirv_shader_passthrough"]
|
|
|
|
# Statically linked DXC shader compiler for DirectX 12
|
|
# TODO: When wgpu switches to DirectX 12 instead of Vulkan by default on windows, make this a default feature
|
|
statically-linked-dxc = ["bevy_render/statically-linked-dxc"]
|
|
|
|
# Include tonemapping LUT KTX2 files.
|
|
tonemapping_luts = ["bevy_core_pipeline/tonemapping_luts"]
|
|
|
|
# Include SMAA LUT KTX2 Files
|
|
smaa_luts = ["bevy_core_pipeline/smaa_luts"]
|
|
|
|
# Audio format support (vorbis is enabled by default)
|
|
flac = ["bevy_audio/flac"]
|
|
mp3 = ["bevy_audio/mp3"]
|
|
vorbis = ["bevy_audio/vorbis"]
|
|
wav = ["bevy_audio/wav"]
|
|
minimp3 = ["bevy_audio/minimp3"]
|
|
symphonia-aac = ["bevy_audio/symphonia-aac"]
|
|
symphonia-all = ["bevy_audio/symphonia-all"]
|
|
symphonia-flac = ["bevy_audio/symphonia-flac"]
|
|
symphonia-isomp4 = ["bevy_audio/symphonia-isomp4"]
|
|
symphonia-vorbis = ["bevy_audio/symphonia-vorbis"]
|
|
symphonia-wav = ["bevy_audio/symphonia-wav"]
|
|
|
|
# Shader formats
|
|
shader_format_glsl = [
|
|
"bevy_render/shader_format_glsl",
|
|
"bevy_pbr?/shader_format_glsl",
|
|
]
|
|
shader_format_spirv = ["bevy_render/shader_format_spirv"]
|
|
|
|
serialize = [
|
|
"bevy_a11y?/serialize",
|
|
"bevy_color?/serialize",
|
|
"bevy_ecs/serialize",
|
|
"bevy_image?/serialize",
|
|
"bevy_input/serialize",
|
|
"bevy_math/serialize",
|
|
"bevy_scene?/serialize",
|
|
"bevy_time/serialize",
|
|
"bevy_transform/serialize",
|
|
"bevy_ui?/serialize",
|
|
"bevy_window?/serialize",
|
|
"bevy_winit?/serialize",
|
|
"bevy_platform_support/serialize",
|
|
]
|
|
multi_threaded = [
|
|
"std",
|
|
"bevy_asset?/multi_threaded",
|
|
"bevy_ecs/multi_threaded",
|
|
"bevy_render?/multi_threaded",
|
|
"bevy_tasks/multi_threaded",
|
|
]
|
|
async-io = ["std", "bevy_tasks/async-io"]
|
|
|
|
# Display server protocol support (X11 is enabled by default)
|
|
wayland = ["bevy_winit/wayland"]
|
|
x11 = ["bevy_winit/x11"]
|
|
|
|
# Android activity support (choose one)
|
|
android-native-activity = ["bevy_winit/android-native-activity"]
|
|
android-game-activity = ["bevy_winit/android-game-activity"]
|
|
|
|
# Transmission textures in `StandardMaterial`:
|
|
pbr_transmission_textures = [
|
|
"bevy_pbr?/pbr_transmission_textures",
|
|
"bevy_gltf?/pbr_transmission_textures",
|
|
]
|
|
|
|
# Multi-layer material textures in `StandardMaterial`:
|
|
pbr_multi_layer_material_textures = [
|
|
"bevy_pbr?/pbr_multi_layer_material_textures",
|
|
"bevy_gltf?/pbr_multi_layer_material_textures",
|
|
]
|
|
|
|
# Anisotropy texture in `StandardMaterial`:
|
|
pbr_anisotropy_texture = [
|
|
"bevy_pbr?/pbr_anisotropy_texture",
|
|
"bevy_gltf?/pbr_anisotropy_texture",
|
|
]
|
|
|
|
# Percentage-closer soft shadows
|
|
experimental_pbr_pcss = ["bevy_pbr?/experimental_pbr_pcss"]
|
|
|
|
# Specular textures in `StandardMaterial`:
|
|
pbr_specular_textures = [
|
|
"bevy_pbr?/pbr_specular_textures",
|
|
"bevy_gltf?/pbr_specular_textures",
|
|
]
|
|
|
|
# Optimise for WebGL2
|
|
webgl = [
|
|
"bevy_core_pipeline?/webgl",
|
|
"bevy_pbr?/webgl",
|
|
"bevy_render?/webgl",
|
|
"bevy_gizmos?/webgl",
|
|
"bevy_sprite?/webgl",
|
|
]
|
|
|
|
webgpu = [
|
|
"bevy_core_pipeline?/webgpu",
|
|
"bevy_pbr?/webgpu",
|
|
"bevy_render?/webgpu",
|
|
"bevy_gizmos?/webgpu",
|
|
"bevy_sprite?/webgpu",
|
|
]
|
|
|
|
# enable systems that allow for automated testing on CI
|
|
bevy_ci_testing = ["bevy_dev_tools/bevy_ci_testing", "bevy_render?/ci_limits"]
|
|
|
|
# Enable animation support, and glTF animation loading
|
|
animation = ["bevy_animation", "bevy_gltf?/bevy_animation"]
|
|
|
|
bevy_sprite = ["dep:bevy_sprite", "bevy_gizmos?/bevy_sprite", "bevy_image"]
|
|
bevy_pbr = ["dep:bevy_pbr", "bevy_gizmos?/bevy_pbr", "bevy_image"]
|
|
bevy_window = ["dep:bevy_window", "dep:bevy_a11y"]
|
|
bevy_core_pipeline = ["dep:bevy_core_pipeline", "bevy_image"]
|
|
bevy_gizmos = ["dep:bevy_gizmos", "bevy_image"]
|
|
bevy_gltf = ["dep:bevy_gltf", "bevy_image"]
|
|
bevy_ui = ["dep:bevy_ui", "bevy_image"]
|
|
bevy_image = ["dep:bevy_image"]
|
|
|
|
# Used to disable code that is unsupported when Bevy is dynamically linked
|
|
dynamic_linking = ["bevy_diagnostic/dynamic_linking"]
|
|
|
|
# Enable using a shared stdlib for cxx on Android.
|
|
android_shared_stdcxx = ["bevy_audio/android_shared_stdcxx"]
|
|
|
|
# Enable AccessKit on Unix backends (currently only works with experimental
|
|
# screen readers and forks.)
|
|
accesskit_unix = ["bevy_winit/accesskit_unix"]
|
|
|
|
bevy_text = ["dep:bevy_text", "bevy_image"]
|
|
|
|
bevy_render = [
|
|
"dep:bevy_render",
|
|
"bevy_scene?/bevy_render",
|
|
"bevy_gizmos?/bevy_render",
|
|
"bevy_image",
|
|
"bevy_color/wgpu-types",
|
|
"bevy_color/encase",
|
|
]
|
|
|
|
# Enable assertions to check the validity of parameters passed to glam
|
|
glam_assert = ["bevy_math/glam_assert"]
|
|
|
|
# Enable assertions in debug builds to check the validity of parameters passed to glam
|
|
debug_glam_assert = ["bevy_math/debug_glam_assert"]
|
|
|
|
default_font = ["bevy_text?/default_font"]
|
|
|
|
# Enables the built-in asset processor for processed assets.
|
|
asset_processor = ["bevy_asset?/asset_processor"]
|
|
|
|
# Enables watching the filesystem for Bevy Asset hot-reloading
|
|
file_watcher = ["bevy_asset?/file_watcher"]
|
|
|
|
# Enables watching embedded files for Bevy Asset hot-reloading
|
|
embedded_watcher = ["bevy_asset?/embedded_watcher"]
|
|
|
|
# Enable system stepping support
|
|
bevy_debug_stepping = [
|
|
"bevy_ecs/bevy_debug_stepping",
|
|
"bevy_app/bevy_debug_stepping",
|
|
]
|
|
|
|
# Enables the meshlet renderer for dense high-poly scenes (experimental)
|
|
meshlet = ["bevy_pbr?/meshlet"]
|
|
|
|
# Enables processing meshes into meshlet meshes for bevy_pbr
|
|
meshlet_processor = ["bevy_pbr?/meshlet_processor"]
|
|
|
|
# Provides a collection of developer tools
|
|
bevy_dev_tools = ["dep:bevy_dev_tools"]
|
|
|
|
# Enable support for the Bevy Remote Protocol
|
|
bevy_remote = ["dep:bevy_remote", "serialize"]
|
|
|
|
# Provides picking functionality
|
|
bevy_picking = ["dep:bevy_picking"]
|
|
|
|
# Provides a mesh picking backend
|
|
bevy_mesh_picking_backend = [
|
|
"bevy_picking",
|
|
"bevy_picking/bevy_mesh_picking_backend",
|
|
]
|
|
|
|
# Provides a sprite picking backend
|
|
bevy_sprite_picking_backend = [
|
|
"bevy_picking",
|
|
"bevy_sprite/bevy_sprite_picking_backend",
|
|
]
|
|
|
|
# Provides a UI picking backend
|
|
bevy_ui_picking_backend = ["bevy_picking", "bevy_ui/bevy_ui_picking_backend"]
|
|
|
|
# Provides a UI debug overlay
|
|
bevy_ui_debug = ["bevy_ui?/bevy_ui_debug"]
|
|
|
|
# Enable built in global state machines
|
|
bevy_state = ["dep:bevy_state"]
|
|
|
|
# Enables source location tracking for change detection, which can assist with debugging
|
|
track_location = ["bevy_ecs/track_location"]
|
|
|
|
# Enable function reflection
|
|
reflect_functions = [
|
|
"bevy_reflect/functions",
|
|
"bevy_app/reflect_functions",
|
|
"bevy_ecs/reflect_functions",
|
|
]
|
|
|
|
# Enable documentation reflection
|
|
reflect_documentation = ["bevy_reflect/documentation"]
|
|
|
|
# Enable winit custom cursor support
|
|
custom_cursor = ["bevy_winit/custom_cursor"]
|
|
|
|
# Experimental support for nodes that are ignored for UI layouting
|
|
ghost_nodes = ["bevy_ui/ghost_nodes"]
|
|
|
|
# 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_a11y?/std",
|
|
"bevy_app/std",
|
|
"bevy_color?/std",
|
|
"bevy_diagnostic/std",
|
|
"bevy_ecs/std",
|
|
"bevy_input/std",
|
|
"bevy_input_focus?/std",
|
|
"bevy_math/std",
|
|
"bevy_platform_support/std",
|
|
"bevy_reflect/std",
|
|
"bevy_state?/std",
|
|
"bevy_time/std",
|
|
"bevy_transform/std",
|
|
"bevy_utils/std",
|
|
"bevy_tasks/std",
|
|
"bevy_window?/std",
|
|
]
|
|
|
|
# `critical-section` provides the building blocks for synchronization primitives
|
|
# on all platforms, including `no_std`.
|
|
critical-section = [
|
|
"bevy_a11y?/critical-section",
|
|
"bevy_app/critical-section",
|
|
"bevy_diagnostic/critical-section",
|
|
"bevy_ecs/critical-section",
|
|
"bevy_input/critical-section",
|
|
"bevy_input_focus?/critical-section",
|
|
"bevy_platform_support/critical-section",
|
|
"bevy_reflect/critical-section",
|
|
"bevy_state?/critical-section",
|
|
"bevy_time/critical-section",
|
|
"bevy_utils/critical-section",
|
|
"bevy_tasks/critical-section",
|
|
]
|
|
|
|
# Uses the `libm` maths library instead of the one provided in `std` and `core`.
|
|
libm = [
|
|
"bevy_a11y?/libm",
|
|
"bevy_color?/libm",
|
|
"bevy_input/libm",
|
|
"bevy_input_focus?/libm",
|
|
"bevy_math/libm",
|
|
"bevy_transform/libm",
|
|
"bevy_window?/libm",
|
|
]
|
|
|
|
# Uses `async-executor` as a task execution backend.
|
|
# This backend is incompatible with `no_std` targets.
|
|
async_executor = ["std", "bevy_tasks/async_executor", "bevy_ecs/async_executor"]
|
|
|
|
[dependencies]
|
|
# bevy (no_std)
|
|
bevy_app = { path = "../bevy_app", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_derive = { path = "../bevy_derive", version = "0.16.0-dev", default-features = false }
|
|
bevy_diagnostic = { path = "../bevy_diagnostic", version = "0.16.0-dev", default-features = false }
|
|
bevy_ecs = { path = "../bevy_ecs", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_input = { path = "../bevy_input", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
], optional = true }
|
|
bevy_math = { path = "../bevy_math", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
], optional = true }
|
|
bevy_platform_support = { path = "../bevy_platform_support", version = "0.16.0-dev", default-features = false, features = [
|
|
"alloc",
|
|
] }
|
|
bevy_ptr = { path = "../bevy_ptr", version = "0.16.0-dev", default-features = false }
|
|
bevy_reflect = { path = "../bevy_reflect", version = "0.16.0-dev", default-features = false, features = [
|
|
"smallvec",
|
|
] }
|
|
bevy_time = { path = "../bevy_time", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_transform = { path = "../bevy_transform", version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy-support",
|
|
"bevy_reflect",
|
|
], optional = true }
|
|
bevy_utils = { path = "../bevy_utils", version = "0.16.0-dev", default-features = false, features = [
|
|
"alloc",
|
|
] }
|
|
bevy_tasks = { path = "../bevy_tasks", version = "0.16.0-dev", default-features = false }
|
|
|
|
# bevy (std required)
|
|
bevy_log = { path = "../bevy_log", version = "0.16.0-dev", optional = true }
|
|
|
|
# bevy (optional)
|
|
bevy_a11y = { path = "../bevy_a11y", optional = true, version = "0.16.0-dev", features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_animation = { path = "../bevy_animation", optional = true, version = "0.16.0-dev" }
|
|
bevy_asset = { path = "../bevy_asset", optional = true, version = "0.16.0-dev" }
|
|
bevy_audio = { path = "../bevy_audio", optional = true, version = "0.16.0-dev" }
|
|
bevy_color = { path = "../bevy_color", optional = true, version = "0.16.0-dev", default-features = false, features = [
|
|
"alloc",
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_core_pipeline = { path = "../bevy_core_pipeline", optional = true, version = "0.16.0-dev" }
|
|
bevy_dev_tools = { path = "../bevy_dev_tools", optional = true, version = "0.16.0-dev" }
|
|
bevy_gilrs = { path = "../bevy_gilrs", optional = true, version = "0.16.0-dev" }
|
|
bevy_gizmos = { path = "../bevy_gizmos", optional = true, version = "0.16.0-dev", default-features = false }
|
|
bevy_gltf = { path = "../bevy_gltf", optional = true, version = "0.16.0-dev" }
|
|
bevy_image = { path = "../bevy_image", optional = true, version = "0.16.0-dev" }
|
|
bevy_input_focus = { path = "../bevy_input_focus", optional = true, version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_pbr = { path = "../bevy_pbr", optional = true, version = "0.16.0-dev" }
|
|
bevy_picking = { path = "../bevy_picking", optional = true, version = "0.16.0-dev" }
|
|
bevy_remote = { path = "../bevy_remote", optional = true, version = "0.16.0-dev" }
|
|
bevy_render = { path = "../bevy_render", optional = true, version = "0.16.0-dev" }
|
|
bevy_scene = { path = "../bevy_scene", optional = true, version = "0.16.0-dev" }
|
|
bevy_sprite = { path = "../bevy_sprite", optional = true, version = "0.16.0-dev" }
|
|
bevy_state = { path = "../bevy_state", optional = true, version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_app",
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_text = { path = "../bevy_text", optional = true, version = "0.16.0-dev" }
|
|
bevy_ui = { path = "../bevy_ui", optional = true, version = "0.16.0-dev" }
|
|
bevy_window = { path = "../bevy_window", optional = true, version = "0.16.0-dev", default-features = false, features = [
|
|
"bevy_reflect",
|
|
] }
|
|
bevy_winit = { path = "../bevy_winit", optional = true, version = "0.16.0-dev" }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[package.metadata.docs.rs]
|
|
rustdoc-args = ["-Zunstable-options", "--generate-link-to-definition"]
|
|
all-features = true
|