[package] name = "quasi-bench" version = "0.109.0" description = "What a described screen costs to render, in time and in allocations" edition.workspace = true rust-version.workspace = true authors.workspace = true repository.workspace = true license.workspace = true publish = false [lints] workspace = true [features] # Allocation counting, off by default and never on in a timing run. # # A counting allocator is real instrumentation, and a timing number measured # through it is a number about the instrumentation. So the two measurements are # two builds: `cargo run --release -p quasi-bench` times, and # `cargo run --release -p quasi-bench --features count` counts. count = ["dep:dhat"] # The generated template, compiled. Off by default so the ordinary bench does # not carry a templating engine; on, it adds the third column that says whether # a staged description reaches a compiled template. askama = ["dep:askama"] [dependencies] quasi-router = { path = "../quasi-router", version = "0.109" } quasi-webview = { path = "../quasi-webview", version = "0.109" } quasi-tui = { path = "../quasi-tui", version = "0.109" } quasi-immediate = { path = "../quasi-immediate", version = "0.109" } # `Serves` is the trait carrying `screen` and `fragment`, which is what the # webview is measured through. Taken directly rather than through quasi-webview # because a bench calling a trait method should name the trait it calls. quasi-http = { path = "../quasi-http", version = "0.109" } # The macro under measurement. The bench holds the declared copy of the same # screen `staging.rs` writes by hand, so the staged column measures what the # server actually serves rather than a shape written for a benchmark. quasi-declare = { path = "../quasi-declare", version = "0.1" } makeover-layout = "0.44" # The renderer's own escaper, so the staged path fills a hole exactly the way # `Node::Text` does and the guarantee is not quietly reimplemented. makeover-webview = "0.77" makeover-tui = { version = "0.44", features = ["theme"] } # Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`, # so `Theme::from_theme` is the one way to get one, the same reason quasi-tui's # tests take this. makeover = "3.1" ratatui = { version = "0.30", default-features = false } # The immediate renderer's frame, and its palette type. `default_fonts` is not # optional here: a `Context` with no font builds no galley, so a frame drawn # without them measures layout over nothing. egui = { version = "0.35", features = ["default_fonts"] } makeover-immediate = "0.46" # Allocation counting, and only that. Optional and off by default. It is here # rather than a hand-written `GlobalAlloc` because the workspace forbids # `unsafe_code` and `forbid` cannot be overridden per crate; see # `src/counting.rs`. dhat = { version = "0.3", optional = true } # Compiles `templates/contacts.html`, which is emitted from the description by # `QUASI_EMIT_TEMPLATE=... cargo run -p quasi-bench` and never hand-edited. askama = { version = "0.14", optional = true }