mirror of
https://github.com/emilk/egui.git
synced 2026-08-29 12:50:04 -04:00
* [x] I have followed the instructions in the PR template Remove clippy lint groups already covered by `all` (`complexity`, `perf`, `suspicious`, and the misspelled `correctnesss`), and two individual lints covered by the `cargo` group (`negative_feature_names`, `wildcard_dependencies`). Add `publish = false` to the two internal crates that were missing it (`popups`, `egui_tests`), which silences the `clippy::cargo_common_metadata` warnings. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
304 lines
12 KiB
TOML
304 lines
12 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/ecolor",
|
|
"crates/egui_demo_app",
|
|
"crates/egui_demo_lib",
|
|
"crates/egui_extras",
|
|
"crates/egui_glow",
|
|
"crates/egui_inspection",
|
|
"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 = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
version = "0.36.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.36.1", path = "crates/emath", default-features = false }
|
|
ecolor = { version = "0.36.1", path = "crates/ecolor", default-features = false }
|
|
epaint = { version = "0.36.1", path = "crates/epaint", default-features = false }
|
|
epaint_default_fonts = { version = "0.36.1", path = "crates/epaint_default_fonts" }
|
|
egui = { version = "0.36.1", path = "crates/egui", default-features = false }
|
|
egui-winit = { version = "0.36.1", path = "crates/egui-winit", default-features = false }
|
|
egui_extras = { version = "0.36.1", path = "crates/egui_extras", default-features = false }
|
|
egui-wgpu = { version = "0.36.1", path = "crates/egui-wgpu", default-features = false }
|
|
egui_demo_lib = { version = "0.36.1", path = "crates/egui_demo_lib", default-features = false }
|
|
egui_glow = { version = "0.36.1", path = "crates/egui_glow", default-features = false }
|
|
egui_inspection = { version = "0.36.1", path = "crates/egui_inspection", default-features = false }
|
|
egui_kittest = { version = "0.36.1", path = "crates/egui_kittest", default-features = false }
|
|
eframe = { version = "0.36.1", path = "crates/eframe", default-features = false }
|
|
|
|
accesskit = "0.24.1"
|
|
accesskit_consumer = "0.35.0" # Can't update to 0.36+: kittest 0.4 pins accesskit_consumer 0.35, so bumping splits it into two versions
|
|
accesskit_winit = "0.32.0" # Can't update to 0.33: it needs accesskit_macos 0.26.2, which pulls accesskit_consumer 0.37, duplicating the 0.35 that kittest 0.4 needs. For the same reason, `accesskit_macos` is held at 0.26.0 in `Cargo.lock`.
|
|
ahash = { version = "0.8.12", default-features = false, features = [
|
|
"no-rng", # we don't need DOS-protection, so we let users opt-in to it instead
|
|
"std",
|
|
] }
|
|
android_logger = "0.15.1"
|
|
arboard = { version = "3.6", default-features = false }
|
|
backtrace = "0.3.76"
|
|
bitflags = "2.13"
|
|
bytemuck = "1.25"
|
|
cint = "0.3.1"
|
|
color-hex = "0.2.0"
|
|
criterion = { version = "0.8.2", default-features = false }
|
|
dify = { version = "0.8.0", default-features = false }
|
|
directories = "6.0"
|
|
document-features = "0.2.12"
|
|
ehttp = { version = "0.7.1", default-features = false }
|
|
enum-map = "2.7" # Can't update to 3.1: its `enum-map-derive` moved to syn 3, duplicating the syn 2 that most other proc-macro crates still use
|
|
env_logger = { version = "0.11.8", default-features = false } # 0.11.9+ pulls env_filter 1.x/2.x, duplicating the 0.1.x that android_logger needs
|
|
font-types = { version = "0.12.2", default-features = false, features = ["std"] }
|
|
glow = "0.17.0" # Can't update to 0.18: wgpu 30's wgpu-hal pins glow 0.17, so bumping splits it into two versions
|
|
glutin = { version = "0.32.3", default-features = false }
|
|
glutin-winit = { version = "0.5.0", default-features = false }
|
|
harfrust = "0.12.0"
|
|
image = { version = "0.25.6", default-features = false } # Can't update to 0.25.7+: it needs png 0.18, which only matches resvg once resvg moves to tiny-skia 0.12 — blocked, see resvg below
|
|
itertools = "0.15.0"
|
|
jiff = { version = "0.2.35", default-features = false }
|
|
js-sys = "0.3.103"
|
|
kittest = { version = "0.4.0" }
|
|
log = { version = "0.4.33", features = ["std"] }
|
|
mimalloc = "0.1.52"
|
|
mime_guess2 = { version = "2.3", default-features = false }
|
|
mint = "0.5.9"
|
|
nohash-hasher = "0.2.0"
|
|
objc2 = "0.6.4"
|
|
objc2-app-kit = { version = "0.3.2", default-features = false }
|
|
objc2-foundation = { version = "0.3.2", default-features = false }
|
|
objc2-ui-kit = { version = "0.3.2", default-features = false }
|
|
open = "5.4"
|
|
parking_lot = "0.12.5"
|
|
percent-encoding = "2.3"
|
|
poll-promise = { version = "0.3.0", default-features = false }
|
|
pollster = "1.0"
|
|
profiling = { version = "1.0", default-features = false }
|
|
puffin = "0.20.0"
|
|
puffin_http = "0.17.0"
|
|
rand = "0.10.2"
|
|
raw-window-handle = "0.6.2"
|
|
rayon = "1.12"
|
|
resvg = { version = "0.45.1", default-features = false } # Can't update to 0.47+: it needs tiny-skia 0.12, but winit 0.30's sctk-adwaita 0.10 is stuck on tiny-skia 0.11, so bumping duplicates tiny-skia. (0.46 keeps tiny-skia 0.11 but its fontconfig-parser duplicates roxmltree.)
|
|
rfd = "0.17.2"
|
|
rmp-serde = "1.3"
|
|
ron = "0.12.2"
|
|
self_cell = "1.3"
|
|
# `serde_derive` is held at 1.0.228 in `Cargo.lock`: 1.0.229 moved to syn 3, duplicating the syn 2 that most other proc-macro crates still use
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_bytes = "0.11.19"
|
|
similar-asserts = "2.0"
|
|
skrifa = { version = "0.44.0", default-features = false, features = [
|
|
"std",
|
|
"autohint_shaping",
|
|
] } # Can't update to 0.45: it needs read-fonts 0.42, but harfrust 0.12 pins read-fonts 0.41, so bumping splits read-fonts into two versions
|
|
smallvec = "1.15"
|
|
smithay-clipboard = "0.7.2" # 0.7.3 pulls smithay-client-toolkit 0.20 (calloop 0.14), duplicating the 0.19/0.13 that winit 0.30 needs
|
|
static_assertions = "1.1"
|
|
syntect = { version = "5.3", default-features = false }
|
|
tempfile = "3.27"
|
|
thiserror = "2.0" # Held at 2.0.18 in `Cargo.lock`: `thiserror-impl` 2.0.19 moved to syn 3, duplicating the syn 2 that most other proc-macro crates still use
|
|
tokio = "1.53"
|
|
toml = { version = "1.1", default-features = false }
|
|
type-map = "0.5.1"
|
|
unicode_names2 = { version = "3.1", default-features = false }
|
|
unicode-general-category = "1.1"
|
|
unicode-segmentation = "1.13"
|
|
vello_cpu = { version = "0.2.0", default-features = false, features = [
|
|
"std",
|
|
"u8_pipeline",
|
|
"f32_pipeline",
|
|
] }
|
|
wasm-bindgen = "0.2.126" # Keep wasm-bindgen version in sync in: setup_web.sh, Cargo.toml, Cargo.lock, rust.yml. Don't update this spuriously, because of https://github.com/rerun-io/rerun/issues/8766
|
|
wasm-bindgen-futures = "0.4.76"
|
|
wayland-cursor = { version = "0.31.14", default-features = false }
|
|
web-sys = "0.3.103"
|
|
web-time = "1.1" # Timekeeping for native and web
|
|
webbrowser = "1.2.2" # 1.2.2 fixes RUSTSEC-2026-0257 (`BROWSER` argument injection)
|
|
wgpu = { version = "30.0", default-features = false, features = ["std"] }
|
|
windows-sys = "0.61.2"
|
|
winit = { version = "0.30.13", default-features = false }
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
future_incompatible = { level = "warn", priority = -1 }
|
|
nonstandard_style = { level = "warn", priority = -1 }
|
|
rust_2018_idioms = { level = "warn", priority = -1 }
|
|
trivial_numeric_casts = "warn"
|
|
unused_import_braces = "warn"
|
|
unused_lifetimes = "warn"
|
|
|
|
trivial_casts = "allow"
|
|
unused_qualifications = "allow"
|
|
|
|
[workspace.lints.rustdoc]
|
|
all = "warn"
|
|
|
|
# See also clippy.toml
|
|
[workspace.lints.clippy]
|
|
# `all` = `correctness` + `suspicious` + `style` + `complexity` + `perf`.
|
|
# The remaining groups are `nursery` and `restriction`,
|
|
# which are not meant to be enabled wholesale - we cherry-pick from them below.
|
|
all = { level = "warn", priority = -1 }
|
|
cargo = { level = "warn", priority = -1 }
|
|
pedantic = { level = "warn", priority = -1 }
|
|
|
|
allow_attributes = "warn"
|
|
as_ptr_cast_mut = "warn"
|
|
branches_sharing_code = "warn"
|
|
clear_with_drain = "warn"
|
|
clone_on_ref_ptr = "warn"
|
|
coerce_container_to_any = "warn"
|
|
dbg_macro = "warn"
|
|
debug_assert_with_mut_call = "warn"
|
|
default_union_representation = "warn"
|
|
derive_partial_eq_without_eq = "warn"
|
|
disallowed_script_idents = "warn" # See clippy.toml
|
|
doc_include_without_cfg = "warn"
|
|
empty_enum_variants_with_brackets = "warn"
|
|
equatable_if_let = "warn"
|
|
exit = "warn"
|
|
fallible_impl_from = "warn"
|
|
float_cmp_const = "warn"
|
|
fn_to_numeric_cast_any = "warn"
|
|
get_unwrap = "warn"
|
|
imprecise_flops = "warn"
|
|
infinite_loop = "warn"
|
|
iter_on_empty_collections = "warn"
|
|
iter_on_single_items = "warn"
|
|
iter_over_hash_type = "warn"
|
|
large_include_file = "warn"
|
|
large_stack_frames = "warn"
|
|
literal_string_with_formatting_args = "warn"
|
|
lossy_float_literal = "warn"
|
|
map_err_ignore = "warn"
|
|
mem_forget = "warn"
|
|
missing_assert_message = "warn"
|
|
mutex_integer = "warn"
|
|
needless_pass_by_ref_mut = "warn"
|
|
needless_type_cast = "warn"
|
|
non_zero_suggestions = "warn"
|
|
nonstandard_macro_braces = "warn"
|
|
or_fun_call = "warn"
|
|
path_buf_push_overwrite = "warn"
|
|
pathbuf_init_then_push = "warn"
|
|
precedence_bits = "warn"
|
|
print_stderr = "warn"
|
|
print_stdout = "warn"
|
|
pub_without_shorthand = "warn"
|
|
rc_mutex = "warn"
|
|
redundant_type_annotations = "warn"
|
|
ref_patterns = "warn"
|
|
rest_pat_in_fully_bound_structs = "warn"
|
|
return_and_then = "warn"
|
|
set_contains_or_insert = "warn"
|
|
single_option_map = "warn"
|
|
std_instead_of_core = "warn"
|
|
str_to_string = "warn"
|
|
string_add = "warn"
|
|
string_lit_as_bytes = "warn"
|
|
string_lit_chars_any = "warn"
|
|
suspicious_xor_used_as_pow = "warn"
|
|
todo = "warn"
|
|
too_long_first_doc_paragraph = "warn"
|
|
trailing_empty_array = "warn"
|
|
trait_duplication_in_bounds = "warn"
|
|
tuple_array_conversions = "warn"
|
|
undocumented_unsafe_blocks = "warn"
|
|
unimplemented = "warn"
|
|
uninhabited_references = "warn"
|
|
unnecessary_safety_comment = "warn"
|
|
unnecessary_safety_doc = "warn"
|
|
unnecessary_self_imports = "warn"
|
|
unnecessary_struct_initialization = "warn"
|
|
unused_peekable = "warn"
|
|
unused_rounding = "warn"
|
|
unused_trait_names = "warn"
|
|
unwrap_used = "warn"
|
|
use_self = "warn"
|
|
useless_let_if_seq = "warn"
|
|
verbose_file_reads = "warn"
|
|
|
|
|
|
# Pedantic lints we opt out of, with the number of hits at the time we enabled `pedantic`:
|
|
cast_lossless = "allow" # 204 hits
|
|
cast_possible_truncation = "allow" # 287 hits
|
|
cast_possible_wrap = "allow" # 43 hits
|
|
cast_precision_loss = "allow" # 200 hits
|
|
cast_sign_loss = "allow" # 98 hits
|
|
comparison_chain = "allow"
|
|
default_trait_access = "allow" # 278 hits
|
|
float_cmp = "allow" # exact float comparisons are usually intentional (`float_cmp_const` is still on)
|
|
inline_always = "allow" # 271 hits; we know what we are doing
|
|
items_after_statements = "allow" # 82 hits
|
|
many_single_char_names = "allow" # `r, g, b, a` and `h, s, v` are fine
|
|
missing_panics_doc = "allow" # 68 hits
|
|
must_use_candidate = "allow" # 1169 hits
|
|
redundant_closure_for_method_calls = "allow" # 89 hits
|
|
return_self_not_must_use = "allow" # 246 hits
|
|
should_panic_without_expect = "allow"
|
|
similar_names = "allow" # too many false positives, e.g. `encoder`/`encoded`
|
|
struct_excessive_bools = "allow" # 32 hits
|
|
struct_field_names = "allow" # 23 hits
|
|
too_many_lines = "allow"
|
|
trivially_copy_pass_by_ref = "allow" # 119 hits
|
|
unreadable_literal = "allow" # 513 hits
|
|
used_underscore_binding = "allow" # 25 hits
|
|
|
|
# Other:
|
|
assigning_clones = "allow" # No please
|
|
manual_range_contains = "allow" # this one is just worse imho
|
|
map_unwrap_or = "allow" # so is this one
|
|
multiple_crate_versions = "allow" # we handle this with `cargo deny`
|
|
wildcard_imports = "allow" # `use crate::*` is useful to avoid merge conflicts when adding/removing imports
|
|
|
|
# NOTE: these are in `restriction`/`nursery`, so the `allow` is a no-op today.
|
|
# We keep them to record our intent in case we ever enable those groups.
|
|
let_underscore_must_use = "allow"
|
|
let_underscore_untyped = "allow"
|
|
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
|