mirror of
https://github.com/emilk/egui.git
synced 2026-06-27 15:13:12 -04:00
Hey! I am not sure if this is something that's been considered before and decided against (I couldn't find any PR's or issues). This change removes the internal profiling macros in library crates and the `puffin` feature and replaces it with similar functions in the [profiling](https://github.com/aclysma/profiling) crate. This crate provides a layer of abstraction over various profiler instrumentation crates and allows library users to pick their favorite (supported) profiler. An additional benefit for puffin users is that dependencies of egui are included in the instrumentation output too (mainly wgpu which uses the profiling crate), so more details might be available when profiling. A breaking change is that instead of using the `puffin` feature on egui, users that want to profile the crate with puffin instead have to enable the `profile-with-puffin` feature on the profiling crate. Similarly they could instead choose to use `profile-with-tracy` etc. I tried to add a 'tracy' feature to egui_demo_app in order to showcase , however the /scripts/check.sh currently breaks on mutually exclusive features (which this introduces), so I decided against including it for the initial PR. I'm happy to iterate more on this if there is interest in taking this PR though. Screenshot showing the additional info for wgpu now available when using puffin 
287 lines
9.5 KiB
TOML
287 lines
9.5 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/ecolor",
|
|
"crates/egui_demo_app",
|
|
"crates/egui_demo_lib",
|
|
"crates/egui_extras",
|
|
"crates/egui_glow",
|
|
"crates/egui_kittest",
|
|
"crates/egui-wgpu",
|
|
"crates/egui-winit",
|
|
"crates/egui",
|
|
"crates/emath",
|
|
"crates/epaint",
|
|
"crates/epaint_default_fonts",
|
|
|
|
"examples/*",
|
|
"tests/*",
|
|
|
|
"xtask",
|
|
]
|
|
|
|
[workspace.package]
|
|
edition = "2021"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.80"
|
|
version = "0.29.1"
|
|
|
|
|
|
[profile.release]
|
|
# lto = true # VERY slightly smaller wasm
|
|
# opt-level = 's' # 10-20% smaller wasm compared to `opt-level = 3`
|
|
# opt-level = 1 # very slow and big wasm. Don't do this.
|
|
opt-level = 2 # fast and small wasm, basically same as `opt-level = 's'`
|
|
# opt-level = 3 # unnecessarily large wasm for no performance gain
|
|
|
|
# debug = true # include debug symbols, useful when profiling wasm
|
|
|
|
panic = "abort" # This leads to better optimizations and smaller binaries (and is the default in Wasm anyways).
|
|
|
|
|
|
[profile.dev]
|
|
# Can't leave this on by default, because it breaks the Windows build. Related: https://github.com/rust-lang/cargo/issues/4897
|
|
# split-debuginfo = "unpacked" # faster debug builds on mac
|
|
# opt-level = 1 # Make debug builds run faster
|
|
|
|
# panic = "abort" leads to better optimizations and smaller binaries (and is the default in Wasm anyways),
|
|
# but it also means backtraces don't work with the `backtrace` library (https://github.com/rust-lang/backtrace-rs/issues/397).
|
|
# egui has a feature where if you hold down all modifiers keys on your keyboard and hover any UI widget,
|
|
# you will see the backtrace to that widget, and we don't want to break that feature in dev builds.
|
|
|
|
[profile.dev.package."*"]
|
|
# Optimize all dependencies even in debug builds (does not affect workspace packages):
|
|
opt-level = 2
|
|
|
|
|
|
[workspace.dependencies]
|
|
emath = { version = "0.29.1", path = "crates/emath", default-features = false }
|
|
ecolor = { version = "0.29.1", path = "crates/ecolor", default-features = false }
|
|
epaint = { version = "0.29.1", path = "crates/epaint", default-features = false }
|
|
epaint_default_fonts = { version = "0.29.1", path = "crates/epaint_default_fonts" }
|
|
egui = { version = "0.29.1", path = "crates/egui", default-features = false }
|
|
egui-winit = { version = "0.29.1", path = "crates/egui-winit", default-features = false }
|
|
egui_extras = { version = "0.29.1", path = "crates/egui_extras", default-features = false }
|
|
egui-wgpu = { version = "0.29.1", path = "crates/egui-wgpu", default-features = false }
|
|
egui_demo_lib = { version = "0.29.1", path = "crates/egui_demo_lib", default-features = false }
|
|
egui_glow = { version = "0.29.1", path = "crates/egui_glow", default-features = false }
|
|
egui_kittest = { version = "0.29.1", path = "crates/egui_kittest", default-features = false }
|
|
eframe = { version = "0.29.1", path = "crates/eframe", default-features = false }
|
|
|
|
ahash = { version = "0.8.11", default-features = false, features = [
|
|
"no-rng", # we don't need DOS-protection, so we let users opt-in to it instead
|
|
"std",
|
|
] }
|
|
backtrace = "0.3"
|
|
bytemuck = "1.7.2"
|
|
criterion = { version = "0.5.1", default-features = false }
|
|
dify = { version = "0.7", default-features = false }
|
|
document-features = "0.2.10"
|
|
glow = "0.16"
|
|
glutin = { version = "0.32.0", default-features = false }
|
|
glutin-winit = { version = "0.5.0", default-features = false }
|
|
home = "0.5.9"
|
|
image = { version = "0.25", default-features = false }
|
|
kittest = { git = "https://github.com/rerun-io/kittest", version = "0.1", branch = "main" }
|
|
log = { version = "0.4", features = ["std"] }
|
|
nohash-hasher = "0.2"
|
|
parking_lot = "0.12"
|
|
pollster = "0.4"
|
|
profiling = {version = "1.0", default-features = false }
|
|
puffin = "0.19"
|
|
puffin_http = "0.16"
|
|
raw-window-handle = "0.6.0"
|
|
ron = "0.8"
|
|
serde = { version = "1", features = ["derive"] }
|
|
thiserror = "1.0.37"
|
|
type-map = "0.5.0"
|
|
wasm-bindgen = "0.2"
|
|
wasm-bindgen-futures = "0.4"
|
|
web-sys = "0.3.70"
|
|
web-time = "1.1.0" # Timekeeping for native and web
|
|
wgpu = { version = "23.0.0", default-features = false }
|
|
windows-sys = "0.59"
|
|
winit = { version = "0.30.5", default-features = false }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
elided_lifetimes_in_paths = "warn"
|
|
future_incompatible = { level = "warn", priority = -1 }
|
|
nonstandard_style = { level = "warn", priority = -1 }
|
|
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
rust_2021_prelude_collisions = "warn"
|
|
semicolon_in_expressions_from_macros = "warn"
|
|
trivial_numeric_casts = "warn"
|
|
unsafe_op_in_unsafe_fn = "warn" # `unsafe_op_in_unsafe_fn` may become the default in future Rust versions: https://github.com/rust-lang/rust/issues/71668
|
|
unused_extern_crates = "warn"
|
|
unused_import_braces = "warn"
|
|
unused_lifetimes = "warn"
|
|
|
|
trivial_casts = "allow"
|
|
unused_qualifications = "allow"
|
|
|
|
[workspace.lints.rustdoc]
|
|
all = "warn"
|
|
missing_crate_level_docs = "warn"
|
|
broken_intra_doc_links = "warn"
|
|
|
|
# See also clippy.toml
|
|
[workspace.lints.clippy]
|
|
as_ptr_cast_mut = "warn"
|
|
await_holding_lock = "warn"
|
|
bool_to_int_with_if = "warn"
|
|
char_lit_as_u8 = "warn"
|
|
checked_conversions = "warn"
|
|
clear_with_drain = "warn"
|
|
cloned_instead_of_copied = "warn"
|
|
dbg_macro = "warn"
|
|
debug_assert_with_mut_call = "warn"
|
|
derive_partial_eq_without_eq = "warn"
|
|
disallowed_macros = "warn" # See clippy.toml
|
|
disallowed_methods = "warn" # See clippy.toml
|
|
disallowed_names = "warn" # See clippy.toml
|
|
disallowed_script_idents = "warn" # See clippy.toml
|
|
disallowed_types = "warn" # See clippy.toml
|
|
doc_link_with_quotes = "warn"
|
|
doc_markdown = "warn"
|
|
empty_enum = "warn"
|
|
empty_enum_variants_with_brackets = "warn"
|
|
enum_glob_use = "warn"
|
|
equatable_if_let = "warn"
|
|
exit = "warn"
|
|
expl_impl_clone_on_copy = "warn"
|
|
explicit_deref_methods = "warn"
|
|
explicit_into_iter_loop = "warn"
|
|
explicit_iter_loop = "warn"
|
|
fallible_impl_from = "warn"
|
|
filter_map_next = "warn"
|
|
flat_map_option = "warn"
|
|
float_cmp_const = "warn"
|
|
fn_params_excessive_bools = "warn"
|
|
fn_to_numeric_cast_any = "warn"
|
|
from_iter_instead_of_collect = "warn"
|
|
get_unwrap = "warn"
|
|
if_let_mutex = "warn"
|
|
implicit_clone = "warn"
|
|
implied_bounds_in_impls = "warn"
|
|
imprecise_flops = "warn"
|
|
index_refutable_slice = "warn"
|
|
inefficient_to_string = "warn"
|
|
infinite_loop = "warn"
|
|
into_iter_without_iter = "warn"
|
|
invalid_upcast_comparisons = "warn"
|
|
iter_filter_is_ok = "warn"
|
|
iter_filter_is_some = "warn"
|
|
iter_not_returning_iterator = "warn"
|
|
iter_on_empty_collections = "warn"
|
|
iter_on_single_items = "warn"
|
|
iter_without_into_iter = "warn"
|
|
large_digit_groups = "warn"
|
|
large_include_file = "warn"
|
|
large_stack_arrays = "warn"
|
|
large_stack_frames = "warn"
|
|
large_types_passed_by_value = "warn"
|
|
let_unit_value = "warn"
|
|
linkedlist = "warn"
|
|
lossy_float_literal = "warn"
|
|
macro_use_imports = "warn"
|
|
manual_assert = "warn"
|
|
manual_clamp = "warn"
|
|
manual_instant_elapsed = "warn"
|
|
manual_is_variant_and = "warn"
|
|
manual_let_else = "warn"
|
|
manual_ok_or = "warn"
|
|
manual_string_new = "warn"
|
|
map_err_ignore = "warn"
|
|
map_flatten = "warn"
|
|
map_unwrap_or = "warn"
|
|
match_bool = "warn"
|
|
match_on_vec_items = "warn"
|
|
match_same_arms = "warn"
|
|
match_wild_err_arm = "warn"
|
|
match_wildcard_for_single_variants = "warn"
|
|
mem_forget = "warn"
|
|
mismatched_target_os = "warn"
|
|
mismatching_type_param_order = "warn"
|
|
missing_enforced_import_renames = "warn"
|
|
missing_errors_doc = "warn"
|
|
missing_safety_doc = "warn"
|
|
mixed_attributes_style = "warn"
|
|
mut_mut = "warn"
|
|
mutex_integer = "warn"
|
|
needless_borrow = "warn"
|
|
needless_continue = "warn"
|
|
needless_for_each = "warn"
|
|
needless_pass_by_ref_mut = "warn"
|
|
needless_pass_by_value = "warn"
|
|
negative_feature_names = "warn"
|
|
nonstandard_macro_braces = "warn"
|
|
option_as_ref_cloned = "warn"
|
|
option_option = "warn"
|
|
path_buf_push_overwrite = "warn"
|
|
print_stderr = "warn"
|
|
ptr_as_ptr = "warn"
|
|
ptr_cast_constness = "warn"
|
|
pub_underscore_fields = "warn"
|
|
pub_without_shorthand = "warn"
|
|
rc_mutex = "warn"
|
|
readonly_write_lock = "warn"
|
|
redundant_type_annotations = "warn"
|
|
ref_as_ptr = "warn"
|
|
ref_option_ref = "warn"
|
|
ref_patterns = "warn"
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
same_functions_in_if_condition = "warn"
|
|
semicolon_if_nothing_returned = "warn"
|
|
single_char_pattern = "warn"
|
|
single_match_else = "warn"
|
|
str_split_at_newline = "warn"
|
|
str_to_string = "warn"
|
|
string_add = "warn"
|
|
string_add_assign = "warn"
|
|
string_lit_as_bytes = "warn"
|
|
string_lit_chars_any = "warn"
|
|
string_to_string = "warn"
|
|
suspicious_command_arg_space = "warn"
|
|
suspicious_xor_used_as_pow = "warn"
|
|
todo = "warn"
|
|
trailing_empty_array = "warn"
|
|
trait_duplication_in_bounds = "warn"
|
|
tuple_array_conversions = "warn"
|
|
unchecked_duration_subtraction = "warn"
|
|
undocumented_unsafe_blocks = "warn"
|
|
unimplemented = "warn"
|
|
uninhabited_references = "warn"
|
|
uninlined_format_args = "warn"
|
|
unnecessary_box_returns = "warn"
|
|
unnecessary_safety_doc = "warn"
|
|
unnecessary_struct_initialization = "warn"
|
|
unnecessary_wraps = "warn"
|
|
unnested_or_patterns = "warn"
|
|
unused_peekable = "warn"
|
|
unused_rounding = "warn"
|
|
unused_self = "warn"
|
|
use_self = "warn"
|
|
useless_transmute = "warn"
|
|
verbose_file_reads = "warn"
|
|
wildcard_dependencies = "warn"
|
|
wildcard_imports = "warn"
|
|
zero_sized_map_values = "warn"
|
|
|
|
|
|
# TODO(emilk): enable more of these lints:
|
|
iter_over_hash_type = "allow"
|
|
missing_assert_message = "allow"
|
|
should_panic_without_expect = "allow"
|
|
too_many_lines = "allow"
|
|
unwrap_used = "allow" # TODO(emilk): We really wanna warn on this one
|
|
|
|
# These are meh:
|
|
assigning_clones = "allow" # No please
|
|
let_underscore_must_use = "allow"
|
|
let_underscore_untyped = "allow"
|
|
manual_range_contains = "allow" # this one is just worse imho
|
|
self_named_module_files = "allow" # Disabled waiting on https://github.com/rust-lang/rust-clippy/issues/9602
|
|
significant_drop_tightening = "allow" # Too many false positives
|