Apply the formatter baseline needed by the generated CI gate. Verified the full treefmt check with vendored sources and generated MAP.md excluded. Parsed formatted Cargo manifests and compared their values with HEAD; all are identical.
87 lines
3.8 KiB
TOML
87 lines
3.8 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = ["crates/*"]
|
|
|
|
[workspace.package]
|
|
version = "0.2.0"
|
|
edition = "2021"
|
|
license = "MIT OR Apache-2.0"
|
|
authors = ["sam <samuv.eth@gmail.com>"]
|
|
|
|
# A version two crates share is pinned in `[workspace.dependencies]`; feature additions stay per
|
|
# crate. `image` stays per-crate: its consumers differ on default features, and a member cannot
|
|
# turn off default features that a workspace entry enables.
|
|
# `too_many_arguments` is off: a Bevy system's parameter list is its dependency declaration.
|
|
[workspace.lints.clippy]
|
|
too_many_arguments = "allow"
|
|
|
|
[workspace.dependencies]
|
|
anyhow = "1.0.102"
|
|
# bevy's default features spelled out without `audio`: `2d`, `3d` and `ui` each pull `bevy_audio`
|
|
# and `vorbis`, and the client mixes through kira. Add a feature by name, never `2d`/`3d`/`ui`; a
|
|
# plugin that takes bevy with its default features brings the audio stack back too.
|
|
bevy = { version = "0.18.1", default-features = false, features = [
|
|
"default_app",
|
|
"default_platform",
|
|
"2d_bevy_render",
|
|
"3d_bevy_render",
|
|
"ui_api",
|
|
"ui_bevy_render",
|
|
"scene",
|
|
"picking",
|
|
] }
|
|
# For the `WOW_GPU_MS` meter's query set, which bevy 0.18 does not wrap; must match bevy's wgpu.
|
|
wgpu = "27"
|
|
clap = { version = "4.6.1", features = ["derive"] }
|
|
sha1 = "0.10.6"
|
|
|
|
# lua-src builds the addon VM's Lua 5.1.5, patched to accept exactly the 1.12 client's grammar;
|
|
# the hunks and the command that checks them: `third_party/lua-src/BENILLA.md`.
|
|
[patch.crates-io]
|
|
lua-src = { path = "third_party/lua-src" }
|
|
# kira 0.12.1, patched to compute spatial gains and the volume tween per output chunk and
|
|
# interpolate them, not per sample frame (`third_party/kira/BENILLA.md`).
|
|
kira = { path = "third_party/kira" }
|
|
|
|
# Dependencies at opt-level 3 in dev: at opt-level 0, avian/parry collision drops a run to <1 fps.
|
|
# Line tables only, and never packed into the binary, for the reason under `[profile.dev]` below.
|
|
[profile.dev.package."*"]
|
|
opt-level = 3
|
|
debug = "line-tables-only"
|
|
split-debuginfo = "unpacked"
|
|
|
|
# Our crates at opt-level 1: Bevy's generic hot paths monomorphize into them, and at opt-level 0
|
|
# Stormwind drops from a pinned 60 fps to ~45; the warm incremental rebuild cost is ~0.
|
|
[profile.dev]
|
|
opt-level = 1
|
|
# Line tables only, not `debug = 2`. DWARF is ~97% of what rustc writes for this tree: the largest
|
|
# benilla-app codegen unit measured 145 MB, of which 61 MB was `.debug_str` and 13 MB
|
|
# `.debug_info` against 1.5 MB of `.text`. Carrying that cost a 1.5 GB `libbenilla_app` rlib, a
|
|
# 2.9 GB test binary and an 82 GB `target/debug`, which filled the disk on a 1 TB volume and made
|
|
# every write slower for it. `.debug_line` survives, so a panic backtrace and `gdb`'s `bt` still
|
|
# name a file and a line; `split-debuginfo` leaves the rest in the object files rather than copying
|
|
# it into the linked binary, which is what the link step paid for.
|
|
#
|
|
# This supersedes "no debuginfo trimming measures no recurring win", which was measured on macOS
|
|
# with sccache and no disk pressure. Re-measure on macOS before assuming it holds there.
|
|
debug = "line-tables-only"
|
|
split-debuginfo = "unpacked"
|
|
|
|
# The shipping build (`--profile ship`): fat LTO measures -1.0 cpu_ms (-5 %) against `release`,
|
|
# which stays the measured profile because fat LTO's link time would tax every iteration.
|
|
# `-Ctarget-cpu=native` is not set: it is not portable.
|
|
[profile.ship]
|
|
inherits = "release"
|
|
lto = "fat"
|
|
codegen-units = 1
|
|
|
|
# `release` plus incremental, run as `cargo play`: under `release` a one-line edit to
|
|
# `benilla-app` costs 2m47s. Incremental applies to workspace members only, so dependencies stay
|
|
# sccache-cacheable; it changes codegen, so it lives here and not in the measured `release`.
|
|
[profile.play]
|
|
inherits = "release"
|
|
incremental = true
|
|
# Not for speed: under `incremental`, thin-local LTO leaves promoted `anon.*.llvm.*` symbols
|
|
# unresolved and the link fails intermittently (rustc #86049).
|
|
lto = "off"
|