chore: disable Bevy default features to drop unused audio stack
Closes Quat investigation #2. The project uses kira for audio (cpal 0.17 + alsa 0.10), but Bevy's default feature set still pulled bevy_audio → rodio → cpal 0.15 + alsa 0.9 + symphonia codecs — about 50 transitive crates the binary never executes. Workspace Cargo.toml's bevy entry now declares default-features = false plus an explicit allow-list of the features actually used (default_app subset + default_platform desktop subset + common_api + 2D + UI rendering). The list is derived analytically from the leaves of Bevy 0.18's 2d and ui meta-features; built cleanly on the first try with no missing-symbol errors. Features intentionally omitted vs Bevy default: - bevy_audio (kira handles audio directly) - bevy_animation (custom CardAnimation, not Bevy's) - bevy_gilrs, bevy_gizmos, bevy_picking variants, bevy_post_process, scene, hdr, sysinfo_plugin (none used) - webgl2, web, android-* (desktop-only; solitaire_wasm is Bevy-free and uses wasm-bindgen + solitaire_core directly) - wayland (X11 chosen; Wayland can be added later if requested) Dependency-tree size for solitaire_app drops from 628 unique crates to 577 (-51). Verified gone: bevy_audio, rodio, cpal 0.15. The remaining cpal 0.17 and symphonia 0.5 are pulled by kira, not Bevy. solitaire_wasm needed no changes — it doesn't depend on bevy. All 1134 tests pass; clippy clean. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Generated
+23
-1090
File diff suppressed because it is too large
Load Diff
+40
-1
@@ -36,7 +36,46 @@ solitaire_sync = { path = "solitaire_sync" }
|
|||||||
solitaire_data = { path = "solitaire_data" }
|
solitaire_data = { path = "solitaire_data" }
|
||||||
solitaire_engine = { path = "solitaire_engine" }
|
solitaire_engine = { path = "solitaire_engine" }
|
||||||
|
|
||||||
bevy = "0.18"
|
# Bevy with `default-features = false` to avoid the unused
|
||||||
|
# `bevy_audio → rodio + symphonia + cpal 0.15 + alsa 0.9` chain.
|
||||||
|
# Audio is handled directly by `kira` in `audio_plugin.rs`, so the
|
||||||
|
# `bevy_audio` feature is intentionally omitted. The features below
|
||||||
|
# enumerate every leaf of the standard `2d` + `ui` meta-features that
|
||||||
|
# we actually use; new features should only be added with a
|
||||||
|
# corresponding use site.
|
||||||
|
bevy = { version = "0.18", default-features = false, features = [
|
||||||
|
# default_app
|
||||||
|
"async_executor",
|
||||||
|
"bevy_asset",
|
||||||
|
"bevy_input_focus",
|
||||||
|
"bevy_log",
|
||||||
|
"bevy_state",
|
||||||
|
"bevy_window",
|
||||||
|
"custom_cursor",
|
||||||
|
"reflect_auto_register",
|
||||||
|
# default_platform (desktop subset; no android/wayland/webgl/gilrs/sysinfo)
|
||||||
|
"std",
|
||||||
|
"bevy_winit",
|
||||||
|
"default_font",
|
||||||
|
"multi_threaded",
|
||||||
|
"x11",
|
||||||
|
# common_api
|
||||||
|
"bevy_color",
|
||||||
|
"bevy_image",
|
||||||
|
"bevy_mesh",
|
||||||
|
"bevy_shader",
|
||||||
|
"bevy_text",
|
||||||
|
"png",
|
||||||
|
# 2d rendering
|
||||||
|
"bevy_camera",
|
||||||
|
"bevy_render",
|
||||||
|
"bevy_core_pipeline",
|
||||||
|
"bevy_sprite",
|
||||||
|
"bevy_sprite_render",
|
||||||
|
# UI rendering
|
||||||
|
"bevy_ui",
|
||||||
|
"bevy_ui_render",
|
||||||
|
] }
|
||||||
kira = "0.12"
|
kira = "0.12"
|
||||||
|
|
||||||
# SVG rasterisation pipeline for the runtime card-theme system.
|
# SVG rasterisation pipeline for the runtime card-theme system.
|
||||||
|
|||||||
Reference in New Issue
Block a user