[workspace] resolver = "2" members = [ "crates/collections", "crates/gpui", "crates/gpui_macros", "crates/gpui_tokio", "crates/html_to_markdown", "crates/http_client", "crates/http_client_tls", "crates/media", "crates/refineable", "crates/refineable/derive_refineable", "crates/reqwest_client", "crates/scheduler", "crates/sum_tree", "crates/util", "crates/util_macros", "crates/watch", "tooling/perf", ] [workspace.package] publish = false edition = "2024" [workspace.dependencies] # # Workspace member crates # collections = { path = "crates/collections", version = "0.1.0" } derive_refineable = { path = "crates/refineable/derive_refineable" } gpui = { path = "crates/gpui", default-features = false } gpui_macros = { path = "crates/gpui_macros" } gpui_tokio = { path = "crates/gpui_tokio" } html_to_markdown = { path = "crates/html_to_markdown" } http_client = { path = "crates/http_client" } http_client_tls = { path = "crates/http_client_tls" } media = { path = "crates/media" } refineable = { path = "crates/refineable" } reqwest_client = { path = "crates/reqwest_client" } scheduler = { path = "crates/scheduler" } sum_tree = { path = "crates/sum_tree" } util = { path = "crates/util" } util_macros = { path = "crates/util_macros" } watch = { path = "crates/watch" } perf = { path = "tooling/perf" } # # External crates # aho-corasick = "1.1" circular-buffer = "1.0" any_vec = "0.14" anyhow = "1.0.86" arrayvec = { version = "0.7.4", features = ["serde"] } ashpd = { version = "0.11", default-features = false, features = ["async-std"] } async-compat = "0.2.1" async-compression = { version = "0.4", features = ["gzip", "futures-io"] } async-dispatcher = "0.1" async-fs = "2.1" async-lock = "2.1" async-recursion = "1.0.0" async-tar = "0.5.1" async-task = "4.7" async-trait = "0.1" async-tungstenite = "0.31.0" async_zip = { version = "0.0.18", features = ["deflate", "deflate64"] } backtrace = "0.3" base64 = "0.22" bincode = "1.2.1" bitflags = "2.6.0" blade-graphics = { version = "0.7.0" } blade-macros = { version = "0.3.0" } blade-util = { version = "0.3.0" } brotli = "8.0.2" bytes = "1.0" cfg-if = "1.0.3" chrono = { version = "0.4", features = ["serde"] } cocoa = "=0.26.0" cocoa-foundation = "=0.2.0" convert_case = "0.8.0" core-foundation = "=0.10.0" core-foundation-sys = "0.8.6" core-video = { version = "0.4.3", features = ["metal"] } crossbeam = "0.8.4" ctor = "0.4.0" dashmap = "6.0" derive_more = "0.99.17" dirs = "4.0" env_logger = "0.11" futures = "0.3" futures-lite = "1.13" git2 = { version = "0.20.1", default-features = false } globset = "0.4" heck = "0.5" hex = "0.4.3" html5ever = "0.27.0" indoc = "2" inventory = "0.3.19" http = "1.1" http-body = "1.0" hyper = "0.14" image = "0.25.1" indexmap = { version = "2.7.0", features = ["serde"] } itertools = "0.14.0" libc = "0.2" linkify = "0.10.0" log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] } mach2 = "0.5" markup5ever_rcdom = "0.3.0" metal = "0.29" naga = { version = "25.0", features = ["wgsl-in"] } nix = "0.29" objc = "0.2" objc2-foundation = { version = "=0.3.1", default-features = false, features = [ "NSArray", "NSAttributedString", "NSBundle", "NSCoder", "NSData", "NSDate", "NSDictionary", "NSEnumerator", "NSError", "NSGeometry", "NSNotification", "NSNull", "NSObjCRuntime", "NSObject", "NSProcessInfo", "NSRange", "NSRunLoop", "NSString", "NSURL", "NSUndoManager", "NSValue", "objc2-core-foundation", "std" ] } open = "5.0.0" ordered-float = "2.1.1" palette = { version = "0.7.5", default-features = false, features = ["std"] } parking_lot = "0.12.1" pathdiff = "0.2" postage = { version = "0.5", features = ["futures-traits"] } pretty_assertions = { version = "1.3.0", features = ["unstable"] } proc-macro2 = "1.0.93" profiling = "1" pulldown-cmark = { version = "0.12.0", default-features = false } quote = "1.0.9" rand = "0.9" rayon = "1.8" regex = "1.5" # WARNING: If you change this, you must also publish a new version of zed-reqwest to crates.io reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "c15662463bda39148ba154100dd44d3fba5873a4", default-features = false, features = [ "charset", "http2", "macos-system-configuration", "multipart", "rustls-tls-native-roots", "socks", "stream", ], package = "zed-reqwest", version = "0.12.15-zed" } rust-embed = { version = "8.4", features = ["include-exclude"] } rustc-hash = "2.1.0" rustls = { version = "0.23.26" } rustls-platform-verifier = "0.5.0" # WARNING: If you change this, you must also publish a new version of zed-scap to crates.io scap = { git = "https://github.com/zed-industries/scap", rev = "4afea48c3b002197176fb19cd0f9b180dd36eaac", default-features = false, package = "zed-scap", version = "0.0.8-zed" } schemars = { version = "1.0", features = ["indexmap2"] } semver = { version = "1.0", features = ["serde"] } serde = { version = "1.0.221", features = ["derive", "rc"] } serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] } serde_json_lenient = { version = "0.2", features = [ "preserve_order", "raw_value", ] } serde_urlencoded = "0.7" sha2 = "0.10" shlex = "1.3.0" shellexpand = "2.1.0" slotmap = "1.0.6" smallvec = { version = "1.6", features = ["union", "const_new"] } smol = "2.0" stacksafe = "0.1" strsim = "0.11" strum = { version = "0.27.2", features = ["derive"] } subtle = "2.5.0" syn = { version = "2.0.101", features = ["full", "extra-traits", "visit-mut"] } sys-locale = "0.3.1" sysinfo = "0.37.0" take-until = "0.2.0" tempfile = "3.20.0" thiserror = "2.0.12" time = { version = "0.3", features = [ "macros", "parsing", "serde", "serde-well-known", "formatting", "local-offset", ] } tokio = { version = "1" } tokio-tungstenite = { version = "0.26", features = ["__rustls-tls"] } tokio-socks = { version = "0.5.2", default-features = false, features = ["futures-io", "tokio"] } tracing = "0.1.40" unicase = "2.6" unicode-segmentation = "1.10" url = "2.2" uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] } walkdir = "2.5" which = "6.0.0" windows-core = "0.61" yawc = "0.2.5" zeroize = "1.8" ciborium = "0.2" [workspace.dependencies.windows] version = "0.61" features = [ "Foundation_Numerics", "Storage_Search", "Storage_Streams", "System_Threading", "UI_ViewManagement", "Wdk_System_SystemServices", "Win32_Globalization", "Win32_Graphics_Direct3D", "Win32_Graphics_Direct3D11", "Win32_Graphics_Direct3D_Fxc", "Win32_Graphics_DirectComposition", "Win32_Graphics_DirectWrite", "Win32_Graphics_Dwm", "Win32_Graphics_Dxgi", "Win32_Graphics_Dxgi_Common", "Win32_Graphics_Gdi", "Win32_Graphics_Imaging", "Win32_Graphics_Hlsl", "Win32_Networking_WinSock", "Win32_Security", "Win32_Security_Credentials", "Win32_Security_Cryptography", "Win32_Storage_FileSystem", "Win32_System_Com", "Win32_System_Com_StructuredStorage", "Win32_System_Console", "Win32_System_DataExchange", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Memory", "Win32_System_Ole", "Win32_System_Performance", "Win32_System_Pipes", "Win32_System_SystemInformation", "Win32_System_SystemServices", "Win32_System_Threading", "Win32_System_Variant", "Win32_System_WinRT", "Win32_UI_Controls", "Win32_UI_HiDpi", "Win32_UI_Input_Ime", "Win32_UI_Input_KeyboardAndMouse", "Win32_UI_Shell", "Win32_UI_Shell_Common", "Win32_UI_Shell_PropertiesSystem", "Win32_UI_WindowsAndMessaging", ] [patch.crates-io] notify = { git = "https://github.com/zed-industries/notify.git", rev = "b4588b2e5aee68f4c0e100f140e808cbce7b1419" } notify-types = { git = "https://github.com/zed-industries/notify.git", rev = "b4588b2e5aee68f4c0e100f140e808cbce7b1419" } calloop = { git = "https://github.com/zed-industries/calloop" } [profile.dev] split-debuginfo = "unpacked" # https://github.com/rust-lang/cargo/issues/16104 incremental = false codegen-units = 16 # mirror configuration for crates compiled for the build platform # (without this cargo will compile ~400 crates twice) [profile.dev.build-override] codegen-units = 16 [profile.dev.package] # proc-macros start gpui_macros = { opt-level = 3 } derive_refineable = { opt-level = 3 } util_macros = { opt-level = 3 } quote = { opt-level = 3 } syn = { opt-level = 3 } proc-macro2 = { opt-level = 3 } # proc-macros end taffy = { opt-level = 3 } resvg = { opt-level = 3 } collections = { codegen-units = 1 } refineable = { codegen-units = 1 } reqwest_client = { codegen-units = 1 } [profile.release] debug = "limited" lto = "thin" codegen-units = 1 [profile.release-fast] inherits = "release" debug = "full" lto = false codegen-units = 16 [workspace.lints.rust] unexpected_cfgs = { level = "allow" } [workspace.lints.clippy] dbg_macro = "deny" todo = "deny" # This is not a style lint, see https://github.com/rust-lang/rust-clippy/pull/15454 # Remove when the lint gets promoted to `suspicious`. declare_interior_mutable_const = "deny" redundant_clone = "deny" disallowed_methods = "deny" # We currently do not restrict any style rules # as it slows down shipping code to Zed. # # Running ./script/clippy can take several minutes, and so it's # common to skip that step and let CI do it. Any unexpected failures # (which also take minutes to discover) thus require switching back # to an old branch, manual fixing, and re-pushing. # # In the future we could improve this by either making sure # Zed can surface clippy errors in diagnostics (in addition to the # rust-analyzer errors), or by having CI fix style nits automatically. style = { level = "allow", priority = -1 } # Individual rules that have violations in the codebase: type_complexity = "allow" let_underscore_future = "allow" # Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so # warning on this rule produces a lot of noise. single_range_in_vec_init = "allow" # in Rust it can be very tedious to reduce argument count without # running afoul of the borrow checker. too_many_arguments = "allow" # We often have large enum variants yet we rarely actually bother with splitting them up. large_enum_variant = "allow" # Boolean expressions can be hard to read, requiring only the minimal form gets in the way nonminimal_bool = "allow" [workspace.metadata.cargo-machete] ignored = [ "bindgen", "cbindgen", "serde", ]