
# Objective - Our benchmarks and `compile_fail` tests lag behind the rest of the engine because they are not in the Cargo workspace, so not checked by CI. - Fixes #16801, please see it for further context! ## Solution - Add benchmarks and `compile_fail` tests to the Cargo workspace. - Fix any leftover formatting issues and documentation. ## Testing - I think CI should catch most things! ## Questions <details> <summary>Outdated issue I was having with function reflection being optional</summary> The `reflection_types` example is failing in Rust-Analyzer for me, but not a normal check. ```rust error[E0004]: non-exhaustive patterns: `ReflectRef::Function(_)` not covered --> examples/reflection/reflection_types.rs:81:11 | 81 | match value.reflect_ref() { | ^^^^^^^^^^^^^^^^^^^ pattern `ReflectRef::Function(_)` not covered | note: `ReflectRef<'_>` defined here --> /Users/bdeep/dev/bevy/bevy/crates/bevy_reflect/src/kind.rs:178:1 | 178 | pub enum ReflectRef<'a> { | ^^^^^^^^^^^^^^^^^^^^^^^ ... 188 | Function(&'a dyn Function), | -------- not covered = note: the matched value is of type `ReflectRef<'_>` help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern or an explicit pattern as shown | 126 ~ ReflectRef::Opaque(_) => {}, 127 + ReflectRef::Function(_) => todo!() | ``` I think it is because the following line is feature-gated:cc0f6a8db4/examples/reflection/reflection_types.rs (L117-L122)
My theory for why this is happening is because the benchmarks enabled `bevy_reflect`'s `function` feature, which gets merged with the rest of the features when RA checks the workspace, but the `#[cfg(...)]` gate in the example isn't detecting it:cc0f6a8db4/benches/Cargo.toml (L19)
Any thoughts on how to fix this? It's not blocking, since the example still compiles as normal, but it's just RA and the command `cargo check --workspace --all-targets` appears to fail. </summary>
93 lines
2.4 KiB
TOML
93 lines
2.4 KiB
TOML
[package]
|
|
name = "benches"
|
|
edition = "2021"
|
|
description = "Benchmarks that test Bevy's performance"
|
|
publish = false
|
|
license = "MIT OR Apache-2.0"
|
|
# Do not automatically discover benchmarks, we specify them manually instead.
|
|
autobenches = false
|
|
|
|
[dev-dependencies]
|
|
# Bevy crates
|
|
bevy_app = { path = "../crates/bevy_app" }
|
|
bevy_ecs = { path = "../crates/bevy_ecs", features = ["multi_threaded"] }
|
|
bevy_hierarchy = { path = "../crates/bevy_hierarchy" }
|
|
bevy_math = { path = "../crates/bevy_math" }
|
|
bevy_picking = { path = "../crates/bevy_picking", features = [
|
|
"bevy_mesh_picking_backend",
|
|
] }
|
|
bevy_reflect = { path = "../crates/bevy_reflect", features = ["functions"] }
|
|
bevy_render = { path = "../crates/bevy_render" }
|
|
bevy_tasks = { path = "../crates/bevy_tasks" }
|
|
bevy_utils = { path = "../crates/bevy_utils" }
|
|
|
|
# Other crates
|
|
criterion = { version = "0.5.1", features = ["html_reports"] }
|
|
glam = "0.29"
|
|
rand = "0.8"
|
|
rand_chacha = "0.3"
|
|
|
|
# Make `bevy_render` compile on Linux with x11 windowing. x11 vs. Wayland does not matter here
|
|
# because the benches do not actually open any windows.
|
|
[target.'cfg(target_os = "linux")'.dev-dependencies]
|
|
bevy_winit = { path = "../crates/bevy_winit", features = ["x11"] }
|
|
|
|
[lints.clippy]
|
|
doc_markdown = "warn"
|
|
manual_let_else = "warn"
|
|
match_same_arms = "warn"
|
|
redundant_closure_for_method_calls = "warn"
|
|
redundant_else = "warn"
|
|
semicolon_if_nothing_returned = "warn"
|
|
type_complexity = "allow"
|
|
undocumented_unsafe_blocks = "warn"
|
|
unwrap_or_default = "warn"
|
|
needless_lifetimes = "allow"
|
|
|
|
ptr_as_ptr = "warn"
|
|
ptr_cast_constness = "warn"
|
|
ref_as_ptr = "warn"
|
|
|
|
# see: https://github.com/bevyengine/bevy/pull/15375#issuecomment-2366966219
|
|
too_long_first_doc_paragraph = "allow"
|
|
|
|
[lints.rust]
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(docsrs_dep)'] }
|
|
unsafe_op_in_unsafe_fn = "warn"
|
|
unused_qualifications = "warn"
|
|
|
|
[[bench]]
|
|
name = "entity_cloning"
|
|
path = "benches/bevy_ecs/entity_cloning.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "ecs"
|
|
path = "benches/bevy_ecs/main.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "math"
|
|
path = "benches/bevy_math/main.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "picking"
|
|
path = "benches/bevy_picking/main.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "reflect"
|
|
path = "benches/bevy_reflect/main.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "render"
|
|
path = "benches/bevy_render/main.rs"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "tasks"
|
|
path = "benches/bevy_tasks/main.rs"
|
|
harness = false
|