Cargo.toml

  1[workspace]
  2resolver = "2"
  3members = [
  4    "crates/activity_indicator",
  5    "crates/anthropic",
  6    "crates/assets",
  7    "crates/assistant",
  8    "crates/assistant2",
  9    "crates/assistant_settings",
 10    "crates/assistant_slash_command",
 11    "crates/assistant_slash_commands",
 12    "crates/assistant_tool",
 13    "crates/assistant_tools",
 14    "crates/audio",
 15    "crates/auto_update",
 16    "crates/auto_update_ui",
 17    "crates/breadcrumbs",
 18    "crates/call",
 19    "crates/channel",
 20    "crates/cli",
 21    "crates/client",
 22    "crates/clock",
 23    "crates/collab",
 24    "crates/collab_ui",
 25    "crates/collections",
 26    "crates/command_palette",
 27    "crates/command_palette_hooks",
 28    "crates/context_server",
 29    "crates/context_server_settings",
 30    "crates/copilot",
 31    "crates/db",
 32    "crates/diagnostics",
 33    "crates/docs_preprocessor",
 34    "crates/editor",
 35    "crates/evals",
 36    "crates/extension",
 37    "crates/extension_api",
 38    "crates/extension_cli",
 39    "crates/extension_host",
 40    "crates/extensions_ui",
 41    "crates/feature_flags",
 42    "crates/feedback",
 43    "crates/file_finder",
 44    "crates/file_icons",
 45    "crates/fireworks",
 46    "crates/fs",
 47    "crates/fsevent",
 48    "crates/fuzzy",
 49    "crates/git",
 50    "crates/git_hosting_providers",
 51    "crates/go_to_line",
 52    "crates/google_ai",
 53    "crates/gpui",
 54    "crates/gpui_macros",
 55    "crates/html_to_markdown",
 56    "crates/http_client",
 57    "crates/image_viewer",
 58    "crates/indexed_docs",
 59    "crates/inline_completion",
 60    "crates/inline_completion_button",
 61    "crates/install_cli",
 62    "crates/journal",
 63    "crates/language",
 64    "crates/language_extension",
 65    "crates/language_model",
 66    "crates/language_model_selector",
 67    "crates/language_models",
 68    "crates/language_selector",
 69    "crates/language_tools",
 70    "crates/languages",
 71    "crates/livekit_client",
 72    "crates/livekit_client_macos",
 73    "crates/livekit_server",
 74    "crates/lmstudio",
 75    "crates/lsp",
 76    "crates/markdown",
 77    "crates/markdown_preview",
 78    "crates/media",
 79    "crates/menu",
 80    "crates/multi_buffer",
 81    "crates/node_runtime",
 82    "crates/notifications",
 83    "crates/ollama",
 84    "crates/open_ai",
 85    "crates/outline",
 86    "crates/outline_panel",
 87    "crates/paths",
 88    "crates/picker",
 89    "crates/prettier",
 90    "crates/project",
 91    "crates/project_panel",
 92    "crates/project_symbols",
 93    "crates/prompt_library",
 94    "crates/proto",
 95    "crates/recent_projects",
 96    "crates/refineable",
 97    "crates/refineable/derive_refineable",
 98    "crates/release_channel",
 99    "crates/remote",
100    "crates/remote_server",
101    "crates/repl",
102    "crates/reqwest_client",
103    "crates/rich_text",
104    "crates/rope",
105    "crates/rpc",
106    "crates/search",
107    "crates/semantic_index",
108    "crates/semantic_version",
109    "crates/session",
110    "crates/settings",
111    "crates/settings_ui",
112    "crates/snippet",
113    "crates/snippet_provider",
114    "crates/snippets_ui",
115    "crates/sqlez",
116    "crates/sqlez_macros",
117    "crates/story",
118    "crates/storybook",
119    "crates/streaming_diff",
120    "crates/sum_tree",
121    "crates/supermaven",
122    "crates/supermaven_api",
123    "crates/tab_switcher",
124    "crates/task",
125    "crates/tasks_ui",
126    "crates/telemetry",
127    "crates/telemetry_events",
128    "crates/terminal",
129    "crates/terminal_view",
130    "crates/text",
131    "crates/theme",
132    "crates/theme_extension",
133    "crates/theme_importer",
134    "crates/theme_selector",
135    "crates/time_format",
136    "crates/title_bar",
137    "crates/toolchain_selector",
138    "crates/ui",
139    "crates/ui_input",
140    "crates/ui_macros",
141    "crates/reqwest_client",
142    "crates/util",
143    "crates/vcs_menu",
144    "crates/vim",
145    "crates/vim_mode_setting",
146    "crates/welcome",
147    "crates/workspace",
148    "crates/worktree",
149    "crates/zed",
150    "crates/zed_actions",
151    "crates/zeta",
152    "crates/git_ui",
153
154    #
155    # Extensions
156    #
157
158    "extensions/csharp",
159    "extensions/deno",
160    "extensions/elixir",
161    "extensions/emmet",
162    "extensions/erlang",
163    "extensions/glsl",
164    "extensions/haskell",
165    "extensions/html",
166    "extensions/lua",
167    "extensions/php",
168    "extensions/perplexity",
169    "extensions/prisma",
170    "extensions/proto",
171    "extensions/purescript",
172    "extensions/ruff",
173    "extensions/slash-commands-example",
174    "extensions/snippets",
175    "extensions/terraform",
176    "extensions/test-extension",
177    "extensions/toml",
178    "extensions/uiua",
179    "extensions/zig",
180
181    #
182    # Tooling
183    #
184
185    "tooling/xtask",
186]
187default-members = ["crates/zed"]
188
189[workspace.dependencies]
190
191#
192# Workspace member crates
193#
194
195activity_indicator = { path = "crates/activity_indicator" }
196ai = { path = "crates/ai" }
197anthropic = { path = "crates/anthropic" }
198assets = { path = "crates/assets" }
199assistant = { path = "crates/assistant" }
200assistant2 = { path = "crates/assistant2" }
201assistant_settings = { path = "crates/assistant_settings" }
202assistant_slash_command = { path = "crates/assistant_slash_command" }
203assistant_slash_commands = { path = "crates/assistant_slash_commands" }
204assistant_tool = { path = "crates/assistant_tool" }
205assistant_tools = { path = "crates/assistant_tools" }
206audio = { path = "crates/audio" }
207auto_update = { path = "crates/auto_update" }
208auto_update_ui = { path = "crates/auto_update_ui" }
209breadcrumbs = { path = "crates/breadcrumbs" }
210call = { path = "crates/call" }
211channel = { path = "crates/channel" }
212cli = { path = "crates/cli" }
213client = { path = "crates/client" }
214clock = { path = "crates/clock" }
215collab = { path = "crates/collab" }
216collab_ui = { path = "crates/collab_ui" }
217collections = { path = "crates/collections" }
218command_palette = { path = "crates/command_palette" }
219command_palette_hooks = { path = "crates/command_palette_hooks" }
220context_server = { path = "crates/context_server" }
221context_server_settings = { path = "crates/context_server_settings" }
222copilot = { path = "crates/copilot" }
223db = { path = "crates/db" }
224diagnostics = { path = "crates/diagnostics" }
225editor = { path = "crates/editor" }
226extension = { path = "crates/extension" }
227extension_host = { path = "crates/extension_host" }
228extensions_ui = { path = "crates/extensions_ui" }
229feature_flags = { path = "crates/feature_flags" }
230feedback = { path = "crates/feedback" }
231file_finder = { path = "crates/file_finder" }
232file_icons = { path = "crates/file_icons" }
233fireworks = { path = "crates/fireworks" }
234fs = { path = "crates/fs" }
235fsevent = { path = "crates/fsevent" }
236fuzzy = { path = "crates/fuzzy" }
237git = { path = "crates/git" }
238git_ui = { path = "crates/git_ui" }
239git_hosting_providers = { path = "crates/git_hosting_providers" }
240go_to_line = { path = "crates/go_to_line" }
241google_ai = { path = "crates/google_ai" }
242gpui = { path = "crates/gpui", default-features = false, features = [
243    "http_client",
244] }
245gpui_macros = { path = "crates/gpui_macros" }
246html_to_markdown = { path = "crates/html_to_markdown" }
247http_client = { path = "crates/http_client" }
248image_viewer = { path = "crates/image_viewer" }
249indexed_docs = { path = "crates/indexed_docs" }
250inline_completion = { path = "crates/inline_completion" }
251inline_completion_button = { path = "crates/inline_completion_button" }
252install_cli = { path = "crates/install_cli" }
253journal = { path = "crates/journal" }
254language = { path = "crates/language" }
255language_extension = { path = "crates/language_extension" }
256language_model = { path = "crates/language_model" }
257language_model_selector = { path = "crates/language_model_selector" }
258language_models = { path = "crates/language_models" }
259language_selector = { path = "crates/language_selector" }
260language_tools = { path = "crates/language_tools" }
261languages = { path = "crates/languages" }
262livekit_client = { path = "crates/livekit_client" }
263livekit_client_macos = { path = "crates/livekit_client_macos" }
264livekit_server = { path = "crates/livekit_server" }
265lmstudio = { path = "crates/lmstudio" }
266lsp = { path = "crates/lsp" }
267markdown = { path = "crates/markdown" }
268markdown_preview = { path = "crates/markdown_preview" }
269media = { path = "crates/media" }
270menu = { path = "crates/menu" }
271multi_buffer = { path = "crates/multi_buffer" }
272node_runtime = { path = "crates/node_runtime" }
273notifications = { path = "crates/notifications" }
274ollama = { path = "crates/ollama" }
275open_ai = { path = "crates/open_ai" }
276outline = { path = "crates/outline" }
277outline_panel = { path = "crates/outline_panel" }
278paths = { path = "crates/paths" }
279picker = { path = "crates/picker" }
280plugin = { path = "crates/plugin" }
281plugin_macros = { path = "crates/plugin_macros" }
282prettier = { path = "crates/prettier" }
283project = { path = "crates/project" }
284project_panel = { path = "crates/project_panel" }
285project_symbols = { path = "crates/project_symbols" }
286prompt_library = { path = "crates/prompt_library" }
287proto = { path = "crates/proto" }
288recent_projects = { path = "crates/recent_projects" }
289refineable = { path = "crates/refineable" }
290release_channel = { path = "crates/release_channel" }
291remote = { path = "crates/remote" }
292remote_server = { path = "crates/remote_server" }
293repl = { path = "crates/repl" }
294reqwest_client = { path = "crates/reqwest_client" }
295rich_text = { path = "crates/rich_text" }
296rope = { path = "crates/rope" }
297rpc = { path = "crates/rpc" }
298search = { path = "crates/search" }
299semantic_index = { path = "crates/semantic_index" }
300semantic_version = { path = "crates/semantic_version" }
301session = { path = "crates/session" }
302settings = { path = "crates/settings" }
303settings_ui = { path = "crates/settings_ui" }
304snippet = { path = "crates/snippet" }
305snippet_provider = { path = "crates/snippet_provider" }
306snippets_ui = { path = "crates/snippets_ui" }
307sqlez = { path = "crates/sqlez" }
308sqlez_macros = { path = "crates/sqlez_macros" }
309story = { path = "crates/story" }
310storybook = { path = "crates/storybook" }
311streaming_diff = { path = "crates/streaming_diff" }
312sum_tree = { path = "crates/sum_tree" }
313supermaven = { path = "crates/supermaven" }
314supermaven_api = { path = "crates/supermaven_api" }
315tab_switcher = { path = "crates/tab_switcher" }
316task = { path = "crates/task" }
317tasks_ui = { path = "crates/tasks_ui" }
318telemetry = { path = "crates/telemetry" }
319telemetry_events = { path = "crates/telemetry_events" }
320terminal = { path = "crates/terminal" }
321terminal_view = { path = "crates/terminal_view" }
322text = { path = "crates/text" }
323theme = { path = "crates/theme" }
324theme_extension = { path = "crates/theme_extension" }
325theme_importer = { path = "crates/theme_importer" }
326theme_selector = { path = "crates/theme_selector" }
327time_format = { path = "crates/time_format" }
328title_bar = { path = "crates/title_bar" }
329toolchain_selector = { path = "crates/toolchain_selector" }
330ui = { path = "crates/ui" }
331ui_input = { path = "crates/ui_input" }
332ui_macros = { path = "crates/ui_macros" }
333util = { path = "crates/util" }
334vcs_menu = { path = "crates/vcs_menu" }
335vim = { path = "crates/vim" }
336vim_mode_setting = { path = "crates/vim_mode_setting" }
337welcome = { path = "crates/welcome" }
338workspace = { path = "crates/workspace" }
339worktree = { path = "crates/worktree" }
340zed = { path = "crates/zed" }
341zed_actions = { path = "crates/zed_actions" }
342zeta = { path = "crates/zeta" }
343
344#
345# External crates
346#
347
348aho-corasick = "1.1"
349# TODO(#18342): Update to version 0.25 from crates.io when it is released.
350alacritty_terminal = { git = "https://github.com/alacritty/alacritty.git", rev = "5e78d20c709cb1ab8d44ca7a8702cc26d779227c" }
351any_vec = "0.14"
352anyhow = "1.0.86"
353arrayvec = { version = "0.7.4", features = ["serde"] }
354ashpd = { version = "0.10", default-features = false, features = ["async-std"]}
355async-compat = "0.2.1"
356async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
357async-dispatcher = "0.1"
358async-fs = "2.1"
359async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
360async-recursion = "1.0.0"
361async-tar = "0.5.0"
362async-trait = "0.1"
363async-tungstenite = "0.28"
364async-watch = "0.3.1"
365async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
366base64 = "0.22"
367bitflags = "2.6.0"
368blade-graphics = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
369blade-macros = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
370blade-util = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
371blake3 = "1.5.3"
372bytes = "1.0"
373cargo_metadata = "0.19"
374cargo_toml = "0.21"
375chrono = { version = "0.4", features = ["serde"] }
376clap = { version = "4.4", features = ["derive"] }
377cocoa = "0.26"
378cocoa-foundation = "0.2.0"
379convert_case = "0.6.0"
380core-foundation = "0.9.3"
381core-foundation-sys = "0.8.6"
382ctor = "0.2.6"
383dashmap = "6.0"
384derive_more = "0.99.17"
385dirs = "4.0"
386ec4rs = "1.1"
387emojis = "0.6.1"
388env_logger = "0.11"
389exec = "0.3.1"
390fancy-regex = "0.14.0"
391fork = "0.2.0"
392futures = "0.3"
393futures-batch = "0.6.1"
394futures-lite = "1.13"
395git2 = { version = "0.19", default-features = false }
396globset = "0.4"
397handlebars = "4.3"
398heed = { version = "0.21.0", features = ["read-txn-no-tls"] }
399hex = "0.4.3"
400html5ever = "0.27.0"
401hyper = "0.14"
402http = "1.1"
403ignore = "0.4.22"
404image = "0.25.1"
405indexmap = { version = "2.7.0", features = ["serde"] }
406indoc = "2"
407itertools = "0.14.0"
408jsonwebtoken = "9.3"
409jupyter-protocol = { version = "0.6.0" }
410jupyter-websocket-client = { version = "0.9.0" }
411libc = "0.2"
412libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
413linkify = "0.10.0"
414livekit = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev="060964da10574cd9bf06463a53bf6e0769c5c45e", features = ["dispatcher", "services-dispatcher", "rustls-tls-native-roots"], default-features = false }
415log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
416markup5ever_rcdom = "0.3.0"
417nanoid = "0.4"
418nbformat = { version = "0.10.0" }
419nix = "0.29"
420num-format = "0.4.4"
421ordered-float = "2.1.1"
422palette = { version = "0.7.5", default-features = false, features = ["std"] }
423parking_lot = "0.12.1"
424pathdiff = "0.2"
425pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
426pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
427pet-pixi = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
428pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
429pet-core = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
430pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
431pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
432postage = { version = "0.5", features = ["futures-traits"] }
433pretty_assertions = { version = "1.3.0", features = ["unstable"] }
434profiling = "1"
435prost = "0.9"
436prost-build = "0.9"
437prost-types = "0.9"
438pulldown-cmark = { version = "0.12.0", default-features = false }
439rand = "0.8.5"
440rayon = "1.8"
441regex = "1.5"
442repair_json = "0.1.0"
443reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "fd110f6998da16bbca97b6dddda9be7827c50e29", default-features = false, features = [
444    "charset",
445    "http2",
446    "macos-system-configuration",
447    "rustls-tls-native-roots",
448    "socks",
449    "stream",
450] }
451rsa = "0.9.6"
452runtimelib = { version = "0.25.0", default-features = false, features = [
453    "async-dispatcher-runtime",
454] }
455rustc-demangle = "0.1.23"
456rust-embed = { version = "8.4", features = ["include-exclude"] }
457rustc-hash = "2.1.0"
458rustls = "0.21.12"
459rustls-native-certs = "0.8.0"
460schemars = { version = "0.8", features = ["impl_json_schema", "indexmap2"] }
461semver = "1.0"
462serde = { version = "1.0", features = ["derive", "rc"] }
463serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
464serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
465serde_json_lenient = { version = "0.2", features = [
466    "preserve_order",
467    "raw_value",
468] }
469serde_repr = "0.1"
470sha2 = "0.10"
471shellexpand = "2.1.0"
472shlex = "1.3.0"
473signal-hook = "0.3.17"
474similar = "1.3"
475simplelog = "0.12.2"
476smallvec = { version = "1.6", features = ["union"] }
477smol = "2.0"
478sqlformat = "0.2"
479strsim = "0.11"
480strum = { version = "0.26.0", features = ["derive"] }
481subtle = "2.5.0"
482sys-locale = "0.3.1"
483sysinfo = "0.31.0"
484tempfile = "3.9.0"
485thiserror = "1.0.29"
486tiktoken-rs = "0.6.0"
487time = { version = "0.3", features = [
488    "macros",
489    "parsing",
490    "serde",
491    "serde-well-known",
492    "formatting",
493] }
494tiny_http = "0.8"
495toml = "0.8"
496tokio = { version = "1" }
497tower-http = "0.4.4"
498tree-sitter = { version = "0.23", features = ["wasm"] }
499tree-sitter-bash = "0.23"
500tree-sitter-c = "0.23"
501tree-sitter-cpp = "0.23"
502tree-sitter-css = "0.23"
503tree-sitter-elixir = "0.3"
504tree-sitter-embedded-template = "0.23.0"
505tree-sitter-go = "0.23"
506tree-sitter-go-mod = { git = "https://github.com/camdencheek/tree-sitter-go-mod", rev = "6efb59652d30e0e9cd5f3b3a669afd6f1a926d3c", package = "tree-sitter-gomod" }
507tree-sitter-gowork = { git = "https://github.com/zed-industries/tree-sitter-go-work", rev = "acb0617bf7f4fda02c6217676cc64acb89536dc7" }
508tree-sitter-heex = { git = "https://github.com/zed-industries/tree-sitter-heex", rev = "1dd45142fbb05562e35b2040c6129c9bca346592" }
509tree-sitter-diff = "0.1.0"
510tree-sitter-html = "0.20"
511tree-sitter-jsdoc = "0.23"
512tree-sitter-json = "0.24"
513tree-sitter-md = { git = "https://github.com/tree-sitter-grammars/tree-sitter-markdown", rev = "9a23c1a96c0513d8fc6520972beedd419a973539" }
514tree-sitter-python = "0.23"
515tree-sitter-regex = "0.23"
516tree-sitter-ruby = "0.23"
517tree-sitter-rust = "0.23"
518tree-sitter-typescript = "0.23"
519tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
520unicase = "2.6"
521unindent = "0.1.7"
522unicode-segmentation = "1.10"
523unicode-script = "0.5.7"
524url = "2.2"
525uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] }
526wasmparser = "0.215"
527wasm-encoder = "0.215"
528wasmtime = { version = "24", default-features = false, features = [
529    "async",
530    "demangle",
531    "runtime",
532    "cranelift",
533    "component-model",
534] }
535wasmtime-wasi = "24"
536which = "6.0.0"
537wit-component = "0.201"
538zstd = "0.11"
539metal = "0.30"
540
541[workspace.dependencies.async-stripe]
542git = "https://github.com/zed-industries/async-stripe"
543rev = "3672dd4efb7181aa597bf580bf5a2f5d23db6735"
544default-features = false
545features = [
546    "runtime-tokio-hyper-rustls",
547    "billing",
548    "checkout",
549    "events",
550    # The features below are only enabled to get the `events` feature to build.
551    "chrono",
552    "connect",
553]
554
555[workspace.dependencies.windows]
556version = "0.58"
557features = [
558    "implement",
559    "Foundation_Numerics",
560    "Storage",
561    "System_Threading",
562    "UI_ViewManagement",
563    "Wdk_System_SystemServices",
564    "Win32_Globalization",
565    "Win32_Graphics_Direct2D",
566    "Win32_Graphics_Direct2D_Common",
567    "Win32_Graphics_DirectWrite",
568    "Win32_Graphics_Dwm",
569    "Win32_Graphics_Dxgi_Common",
570    "Win32_Graphics_Gdi",
571    "Win32_Graphics_Imaging",
572    "Win32_Graphics_Imaging_D2D",
573    "Win32_Security",
574    "Win32_Security_Credentials",
575    "Win32_Storage_FileSystem",
576    "Win32_System_Com",
577    "Win32_System_Com_StructuredStorage",
578    "Win32_System_DataExchange",
579    "Win32_System_LibraryLoader",
580    "Win32_System_Memory",
581    "Win32_System_Ole",
582    "Win32_System_SystemInformation",
583    "Win32_System_SystemServices",
584    "Win32_System_Threading",
585    "Win32_System_WinRT",
586    "Win32_UI_Controls",
587    "Win32_UI_HiDpi",
588    "Win32_UI_Input_Ime",
589    "Win32_UI_Input_KeyboardAndMouse",
590    "Win32_UI_Shell",
591    "Win32_UI_Shell_Common",
592    "Win32_UI_WindowsAndMessaging",
593]
594
595# TODO livekit https://github.com/RustAudio/cpal/pull/891
596[patch.crates-io]
597cpal = { git = "https://github.com/zed-industries/cpal", rev = "fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50" }
598
599[profile.dev]
600split-debuginfo = "unpacked"
601debug = "limited"
602codegen-units = 16
603
604[profile.dev.package]
605taffy = { opt-level = 3 }
606cranelift-codegen = { opt-level = 3 }
607resvg = { opt-level = 3 }
608rustybuzz = { opt-level = 3 }
609ttf-parser = { opt-level = 3 }
610wasmtime-cranelift = { opt-level = 3 }
611wasmtime = { opt-level = 3 }
612# Build single-source-file crates with cg=1 as it helps make `cargo build` of a whole workspace a bit faster
613activity_indicator = { codegen-units = 1 }
614assets = { codegen-units = 1 }
615breadcrumbs = { codegen-units = 1 }
616collections = { codegen-units = 1 }
617command_palette = { codegen-units = 1 }
618command_palette_hooks = { codegen-units = 1 }
619evals = { codegen-units = 1 }
620extension_cli = { codegen-units = 1 }
621feature_flags = { codegen-units = 1 }
622file_icons = { codegen-units = 1 }
623fsevent = { codegen-units = 1 }
624image_viewer = { codegen-units = 1 }
625inline_completion_button = { codegen-units = 1 }
626install_cli = { codegen-units = 1 }
627journal = { codegen-units = 1 }
628lmstudio = { codegen-units = 1 }
629menu = { codegen-units = 1 }
630notifications = { codegen-units = 1 }
631ollama = { codegen-units = 1 }
632outline = { codegen-units = 1 }
633paths = { codegen-units = 1 }
634prettier = { codegen-units = 1 }
635project_symbols = { codegen-units = 1 }
636refineable = { codegen-units = 1 }
637release_channel = { codegen-units = 1 }
638reqwest_client = { codegen-units = 1 }
639rich_text = { codegen-units = 1 }
640semantic_version = { codegen-units = 1 }
641session = { codegen-units = 1 }
642snippet = { codegen-units = 1 }
643snippets_ui = { codegen-units = 1 }
644sqlez_macros = { codegen-units = 1 }
645story = { codegen-units = 1 }
646supermaven_api = { codegen-units = 1 }
647telemetry_events = { codegen-units = 1 }
648theme_selector = { codegen-units = 1 }
649time_format = { codegen-units = 1 }
650ui_input = { codegen-units = 1 }
651vcs_menu = { codegen-units = 1 }
652zed_actions = { codegen-units = 1 }
653
654[profile.release]
655debug = "limited"
656lto = "thin"
657codegen-units = 1
658
659[profile.release.package]
660zed = { codegen-units = 16 }
661
662[profile.release-fast]
663inherits = "release"
664debug = "full"
665lto = false
666codegen-units = 16
667
668[workspace.lints.clippy]
669dbg_macro = "deny"
670todo = "deny"
671
672# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
673# warning on this rule produces a lot of noise.
674single_range_in_vec_init = "allow"
675
676# These are all of the rules that currently have violations in the Zed
677# codebase.
678#
679# We'll want to drive this list down by either:
680# 1. fixing violations of the rule and begin enforcing it
681# 2. deciding we want to allow the rule permanently, at which point
682#    we should codify that separately above.
683#
684# This list shouldn't be added to; it should only get shorter.
685# =============================================================================
686
687# There are a bunch of rules currently failing in the `style` group, so
688# allow all of those, for now.
689style = { level = "allow", priority = -1 }
690
691# Temporary list of style lints that we've fixed so far.
692module_inception = { level = "deny" }
693question_mark = { level = "deny" }
694redundant_closure = { level = "deny" }
695# Individual rules that have violations in the codebase:
696type_complexity = "allow"
697# We often return trait objects from `new` functions.
698new_ret_no_self = { level = "allow" }
699# We have a few `next` functions that differ in lifetimes
700# compared to Iterator::next. Yet, clippy complains about those.
701should_implement_trait = { level = "allow" }
702let_underscore_future = "allow"
703
704[workspace.metadata.cargo-machete]
705ignored = ["bindgen", "cbindgen", "prost_build", "serde"]