[workspace] members = [ "core", "core/macros", "core/build_playerglobal", "desktop", "swf", "flv", "web", "web/packages/extension/safari", "wstr", "scanner", "exporter", "frontend-utils", "render", "render/canvas", "render/naga-agal", "render/wgpu", "render/webgl", "ruffle_gc_arena", "stub-report", "video", "video/software", "video/external", "tests", "tests/input-format", "tests/socket-format", "tests/mocket", "tests/framework", ] default-members = ["desktop"] resolver = "2" [workspace.package] authors = ["Ruffle LLC "] edition = "2021" homepage = "https://ruffle.rs" license = "MIT OR Apache-2.0" repository = "https://github.com/ruffle-rs/ruffle" version = "0.1.0" [workspace.dependencies] tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } naga = { version = "22.1.0", features = ["wgsl-out"] } wgpu = "22.1.0" egui = { git = "https://github.com/emilk/egui.git", rev = "e0f0b7f47f4094967530214aec060b9f1ce5954e" } clap = { version = "4.5.17", features = ["derive"] } cpal = "0.15.3" anyhow = "1.0" slotmap = "1.0.7" async-channel = "2.3.1" bitflags = "2.6.0" bytemuck = "1.18.0" chrono = { version = "0.4.38", default-features = false } enum-map = "2.7.3" flate2 = "1.0.33" futures = "0.3.30" image = { version = "0.25.2", default-features = false } js-sys = "0.3.70" web-sys = "0.3.70" log = "0.4" num-derive = "0.4.2" num-traits = "0.2.19" serde = "1.0.210" thiserror = "1.0" url = "2.5.2" # Make sure to match wasm-bindgen-cli version to this everywhere. wasm-bindgen = "=0.2.93" walkdir = "2.5.0" tokio = { version = "1.40.0" } rfd = { git = "https://github.com/PolyMeilex/rfd.git", rev = "e0e725ec9a426acf7c93d9877c41e230fcee3fac" } [workspace.lints.rust] # Clippy nightly often adds new/buggy lints that we want to ignore. # Don't warn about these new lints on stable. renamed_and_removed_lints = "allow" unknown_lints = "allow" [workspace.lints.clippy] # LONG-TERM: These lints are unhelpful. manual_map = "allow" # Less readable: Suggests `opt.map(..)` instsead of `if let Some(opt) { .. }` manual_range_contains = "allow" # Less readable: Suggests `(a..b).contains(n)` instead of `n >= a && n < b` assigning_clones = "allow" # Sometimes useful, but more often than not it doesn't do anything as # we overwrite an empty item. And sometimes it can even be a footgun # by keeping big allocations alive. # Don't optimize build scripts and macros. [profile.release.build-override] opt-level = 0 [profile.dev] panic = "unwind" [profile.release] panic = "abort" [profile.dev.package.h263-rs] opt-level = 3 [profile.dev.package.h263-rs-yuv] opt-level = 3 [profile.dev.package.nihav_core] opt-level = 3 [profile.dev.package.nihav_codec_support] opt-level = 3 [profile.dev.package.nihav_duck] opt-level = 3 # TODO: Set rustflags here instead of in web/core/package.json, when that # feature becomes stable. See: https://github.com/rust-lang/cargo/issues/10271 # Until then, these custom profiles let cargo keep the build cache alive # across "dual-wasm" builds, separating it for the two .wasm modules. [profile.web-vanilla-wasm] inherits = "release" [profile.web-wasm-extensions] inherits = "release" [profile.ci] inherits = "release" debug-assertions = true overflow-checks = true # "Not too slow to compile, fast enough to run." opt-level = 2 # Takes too long, especially on Windows, with marginal benefit otherwise. lto = "off" # This is also set with higher authority in `test_rust.yml`. incremental = true # Right between the defaults of 16 and 256, for crate fragment caching. codegen-units = 64