Files
benilla-octo/Cargo.toml
T
SamandClaude Fable 5 6c6a0c9b88 quest timers, honest interiors, and snow rebuilt from the bytes
- timed quests get their countdown — a Quest Timers box under the minimap and a Time Remaining line in the quest log, kept against the server's own clock
- interiors go honest: footsteps stop crunching the terrain's snow through a building's floor, and tavern voices are authored dry, so the fake cave echo is gone
- snow is the reference's again — point-sprite flakes at the era's pixel size, and a spawn slab that leans into your run so a runner no longer outruns the field
- Stormwind stops drawing Elwynn through its walls, a looted quest crate's lid settles, cold zones puff visible breath, and the collect-quest toast fires only on a real advance

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-11 18:00:02 +07:00

67 lines
3.6 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[workspace]
resolver = "2"
members = ["crates/*"]
[workspace.package]
version = "0.1.0"
edition = "2021"
license = "MIT OR Apache-2.0"
authors = ["sam <samuv.eth@gmail.com>"]
# Shared pins live here; promote a dep the moment two crates pin the same version (the policy
# since day one, enacted at the 0530 debt sweep). Per-crate feature additions stay in the crate.
# `image` deliberately stays per-crate: its default-features/feature sets differ per consumer,
# and a workspace default-features choice can't be subtracted from downstream.
[workspace.dependencies]
anyhow = "1.0.102"
bevy = "0.18.1"
clap = { version = "4.6.1", features = ["derive"] }
# No `[patch.crates-io]`: the WoW format + protocol stack is fully in-repo (decision 0021), so there
# are no warcraft-rs / wow_messages crates (or forks of them) anywhere in the tree.
# Optimize *dependencies* even in dev builds. avian/parry collision math (and wgpu/bevy render) is
# unusably slow at opt-level 0 — a plain `cargo run` crawls to <1 fps once physics is doing real work.
# opt-level 3 on deps (the standard Bevy fix) makes debug builds playable while our own crates stay
# lightly optimized for fast incremental rebuilds. One-time cost: deps recompile optimized the first time.
[profile.dev.package."*"]
opt-level = 3
# Our own crates at opt-level 1, not 0: Bevy's generic hot paths (material specialization scans,
# query par_for_each closures) monomorphize INTO our crate, so at opt 0 they run at debug codegen
# speed over every resident entity — measured at Stormwind as the difference between ~45 fps and a
# pinned 60 (decision 0362). Warm incremental rebuild cost measured at ~zero. NB: FPS probe numbers
# in decisions ≤ 0361 were taken at opt 0 and are not comparable with post-0362 probes.
[profile.dev]
opt-level = 1
# No debuginfo trimming: `debug = "line-tables-only"` was A/B-measured (decision 0192) at zero
# recurring win on this stack (macOS unpacked split-debuginfo; sccache; fast ld) — not worth
# invalidating every warm target and the sccache cache for.
# Shipping-grade optimization, A/B-graded at the pin (decision 0736): −1.0 cpu_ms (−5 %) vs
# default release, flat at the empty-map and bare-Bevy floors. The campaign keeps grading on
# default `release` — same-day A/B is the law, and fat LTO's link time would tax every
# iteration for a constant offset. Build with `--profile ship` for actual releases (add
# `RUSTFLAGS=-Ctarget-cpu=native` for a machine-local binary; not set here — it isn't portable).
[profile.ship]
inherits = "release"
lto = "fat"
codegen-units = 1
# The director's play loop (decision 1157): `release` plus incremental compilation. `benilla-app` is one crate of
# ~243k lines, and release is non-incremental by cargo's default, so a one-line edit re-optimizes
# all of it — measured 2m47s (43s frontend, ~121s LLVM at opt-level 3) against a 1.8s stamp rebuild
# and a 2.5s no-op. Incremental caches both halves per codegen unit, so an edit pays for what it
# touched. Cargo applies `incremental` to workspace members ONLY (verified: `target/debug/incremental`
# holds our 16 crates and zero registry deps), so the ~760 dependencies stay non-incremental and
# sccache-cacheable — 0192's wrapper and the cold-slot build are untouched.
#
# Why a separate profile rather than flipping `release`: incremental raises the codegen-unit count
# and drops cross-unit inlining, which is a real codegen difference. The FPS campaign grades on
# default `release` (0736) and same-day A/B is the law, so the graded profile must not quietly
# change under it. Run it as `cargo play` (the alias in `.cargo/config.toml`).
[profile.play]
inherits = "release"
incremental = true