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"
349alacritty_terminal = "0.24"
350any_vec = "0.14"
351anyhow = "1.0.86"
352arrayvec = { version = "0.7.4", features = ["serde"] }
353ashpd = { version = "0.10", default-features = false, features = ["async-std"]}
354async-compat = "0.2.1"
355async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
356async-dispatcher = "0.1"
357async-fs = "2.1"
358async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
359async-recursion = "1.0.0"
360async-tar = "0.5.0"
361async-trait = "0.1"
362async-tungstenite = "0.28"
363async-watch = "0.3.1"
364async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
365base64 = "0.22"
366bitflags = "2.6.0"
367blade-graphics = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
368blade-macros = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
369blade-util = { git = "https://github.com/kvark/blade", rev = "091a8401033847bb9b6ace3fcf70448d069621c5" }
370blake3 = "1.5.3"
371bytes = "1.0"
372cargo_metadata = "0.19"
373cargo_toml = "0.21"
374chrono = { version = "0.4", features = ["serde"] }
375clap = { version = "4.4", features = ["derive"] }
376cocoa = "0.26"
377cocoa-foundation = "0.2.0"
378convert_case = "0.6.0"
379core-foundation = "0.9.3"
380core-foundation-sys = "0.8.6"
381ctor = "0.2.6"
382dashmap = "6.0"
383derive_more = "0.99.17"
384dirs = "4.0"
385ec4rs = "1.1"
386emojis = "0.6.1"
387env_logger = "0.11"
388exec = "0.3.1"
389fancy-regex = "0.14.0"
390fork = "0.2.0"
391futures = "0.3"
392futures-batch = "0.6.1"
393futures-lite = "1.13"
394git2 = { version = "0.19", default-features = false }
395globset = "0.4"
396handlebars = "4.3"
397heed = { version = "0.21.0", features = ["read-txn-no-tls"] }
398hex = "0.4.3"
399html5ever = "0.27.0"
400hyper = "0.14"
401http = "1.1"
402ignore = "0.4.22"
403image = "0.25.1"
404indexmap = { version = "2.7.0", features = ["serde"] }
405indoc = "2"
406itertools = "0.14.0"
407jsonwebtoken = "9.3"
408jupyter-protocol = { version = "0.6.0" }
409jupyter-websocket-client = { version = "0.9.0" }
410libc = "0.2"
411libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
412linkify = "0.10.0"
413livekit = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev="060964da10574cd9bf06463a53bf6e0769c5c45e", features = ["dispatcher", "services-dispatcher", "rustls-tls-native-roots"], default-features = false }
414log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
415markup5ever_rcdom = "0.3.0"
416nanoid = "0.4"
417nbformat = { version = "0.10.0" }
418nix = "0.29"
419num-format = "0.4.4"
420ordered-float = "2.1.1"
421palette = { version = "0.7.5", default-features = false, features = ["std"] }
422parking_lot = "0.12.1"
423pathdiff = "0.2"
424pet = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
425pet-fs = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
426pet-pixi = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
427pet-conda = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
428pet-core = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
429pet-poetry = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
430pet-reporter = { git = "https://github.com/microsoft/python-environment-tools.git", rev = "1abe5cec5ebfbe97ca71746a4cfc7fe89bddf8e0" }
431postage = { version = "0.5", features = ["futures-traits"] }
432pretty_assertions = { version = "1.3.0", features = ["unstable"] }
433profiling = "1"
434prost = "0.9"
435prost-build = "0.9"
436prost-types = "0.9"
437pulldown-cmark = { version = "0.12.0", default-features = false }
438rand = "0.8.5"
439rayon = "1.8"
440regex = "1.5"
441repair_json = "0.1.0"
442reqwest = { git = "https://github.com/zed-industries/reqwest.git", rev = "fd110f6998da16bbca97b6dddda9be7827c50e29", default-features = false, features = [
443    "charset",
444    "http2",
445    "macos-system-configuration",
446    "rustls-tls-native-roots",
447    "socks",
448    "stream",
449] }
450rsa = "0.9.6"
451runtimelib = { version = "0.25.0", default-features = false, features = [
452    "async-dispatcher-runtime",
453] }
454rustc-demangle = "0.1.23"
455rust-embed = { version = "8.4", features = ["include-exclude"] }
456rustc-hash = "2.1.0"
457rustls = "0.21.12"
458rustls-native-certs = "0.8.0"
459schemars = { version = "0.8", features = ["impl_json_schema", "indexmap2"] }
460semver = "1.0"
461serde = { version = "1.0", features = ["derive", "rc"] }
462serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
463serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
464serde_json_lenient = { version = "0.2", features = [
465    "preserve_order",
466    "raw_value",
467] }
468serde_repr = "0.1"
469sha2 = "0.10"
470shellexpand = "2.1.0"
471shlex = "1.3.0"
472signal-hook = "0.3.17"
473similar = "1.3"
474simplelog = "0.12.2"
475smallvec = { version = "1.6", features = ["union"] }
476smol = "2.0"
477sqlformat = "0.2"
478strsim = "0.11"
479strum = { version = "0.26.0", features = ["derive"] }
480subtle = "2.5.0"
481sys-locale = "0.3.1"
482sysinfo = "0.31.0"
483tempfile = "3.9.0"
484thiserror = "1.0.29"
485tiktoken-rs = "0.6.0"
486time = { version = "0.3", features = [
487    "macros",
488    "parsing",
489    "serde",
490    "serde-well-known",
491    "formatting",
492] }
493tiny_http = "0.8"
494toml = "0.8"
495tokio = { version = "1" }
496tower-http = "0.4.4"
497tree-sitter = { version = "0.23", features = ["wasm"] }
498tree-sitter-bash = "0.23"
499tree-sitter-c = "0.23"
500tree-sitter-cpp = "0.23"
501tree-sitter-css = "0.23"
502tree-sitter-elixir = "0.3"
503tree-sitter-embedded-template = "0.23.0"
504tree-sitter-go = "0.23"
505tree-sitter-go-mod = { git = "https://github.com/camdencheek/tree-sitter-go-mod", rev = "6efb59652d30e0e9cd5f3b3a669afd6f1a926d3c", package = "tree-sitter-gomod" }
506tree-sitter-gowork = { git = "https://github.com/zed-industries/tree-sitter-go-work", rev = "acb0617bf7f4fda02c6217676cc64acb89536dc7" }
507tree-sitter-heex = { git = "https://github.com/zed-industries/tree-sitter-heex", rev = "1dd45142fbb05562e35b2040c6129c9bca346592" }
508tree-sitter-diff = "0.1.0"
509tree-sitter-html = "0.20"
510tree-sitter-jsdoc = "0.23"
511tree-sitter-json = "0.24"
512tree-sitter-md = { git = "https://github.com/tree-sitter-grammars/tree-sitter-markdown", rev = "9a23c1a96c0513d8fc6520972beedd419a973539" }
513tree-sitter-python = "0.23"
514tree-sitter-regex = "0.23"
515tree-sitter-ruby = "0.23"
516tree-sitter-rust = "0.23"
517tree-sitter-typescript = "0.23"
518tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
519unicase = "2.6"
520unindent = "0.1.7"
521unicode-segmentation = "1.10"
522unicode-script = "0.5.7"
523url = "2.2"
524uuid = { version = "1.1.2", features = ["v4", "v5", "v7", "serde"] }
525wasmparser = "0.215"
526wasm-encoder = "0.215"
527wasmtime = { version = "24", default-features = false, features = [
528    "async",
529    "demangle",
530    "runtime",
531    "cranelift",
532    "component-model",
533] }
534wasmtime-wasi = "24"
535which = "6.0.0"
536wit-component = "0.201"
537zstd = "0.11"
538metal = "0.30"
539
540[workspace.dependencies.async-stripe]
541git = "https://github.com/zed-industries/async-stripe"
542rev = "3672dd4efb7181aa597bf580bf5a2f5d23db6735"
543default-features = false
544features = [
545    "runtime-tokio-hyper-rustls",
546    "billing",
547    "checkout",
548    "events",
549    # The features below are only enabled to get the `events` feature to build.
550    "chrono",
551    "connect",
552]
553
554[workspace.dependencies.windows]
555version = "0.58"
556features = [
557    "implement",
558    "Foundation_Numerics",
559    "Storage",
560    "System_Threading",
561    "UI_ViewManagement",
562    "Wdk_System_SystemServices",
563    "Win32_Globalization",
564    "Win32_Graphics_Direct2D",
565    "Win32_Graphics_Direct2D_Common",
566    "Win32_Graphics_DirectWrite",
567    "Win32_Graphics_Dwm",
568    "Win32_Graphics_Dxgi_Common",
569    "Win32_Graphics_Gdi",
570    "Win32_Graphics_Imaging",
571    "Win32_Graphics_Imaging_D2D",
572    "Win32_Security",
573    "Win32_Security_Credentials",
574    "Win32_Storage_FileSystem",
575    "Win32_System_Com",
576    "Win32_System_Com_StructuredStorage",
577    "Win32_System_DataExchange",
578    "Win32_System_LibraryLoader",
579    "Win32_System_Memory",
580    "Win32_System_Ole",
581    "Win32_System_SystemInformation",
582    "Win32_System_SystemServices",
583    "Win32_System_Threading",
584    "Win32_System_WinRT",
585    "Win32_UI_Controls",
586    "Win32_UI_HiDpi",
587    "Win32_UI_Input_Ime",
588    "Win32_UI_Input_KeyboardAndMouse",
589    "Win32_UI_Shell",
590    "Win32_UI_Shell_Common",
591    "Win32_UI_WindowsAndMessaging",
592]
593
594# TODO livekit https://github.com/RustAudio/cpal/pull/891
595[patch.crates-io]
596cpal = { git = "https://github.com/zed-industries/cpal", rev = "fd8bc2fd39f1f5fdee5a0690656caff9a26d9d50" }
597
598[profile.dev]
599split-debuginfo = "unpacked"
600debug = "limited"
601codegen-units = 16
602
603[profile.dev.package]
604taffy = { opt-level = 3 }
605cranelift-codegen = { opt-level = 3 }
606resvg = { opt-level = 3 }
607rustybuzz = { opt-level = 3 }
608ttf-parser = { opt-level = 3 }
609wasmtime-cranelift = { opt-level = 3 }
610wasmtime = { opt-level = 3 }
611# Build single-source-file crates with cg=1 as it helps make `cargo build` of a whole workspace a bit faster
612activity_indicator = { codegen-units = 1 }
613assets = { codegen-units = 1 }
614breadcrumbs = { codegen-units = 1 }
615collections = { codegen-units = 1 }
616command_palette = { codegen-units = 1 }
617command_palette_hooks = { codegen-units = 1 }
618evals = { codegen-units = 1 }
619extension_cli = { codegen-units = 1 }
620feature_flags = { codegen-units = 1 }
621file_icons = { codegen-units = 1 }
622fsevent = { codegen-units = 1 }
623image_viewer = { codegen-units = 1 }
624inline_completion_button = { codegen-units = 1 }
625install_cli = { codegen-units = 1 }
626journal = { codegen-units = 1 }
627lmstudio = { codegen-units = 1 }
628menu = { codegen-units = 1 }
629notifications = { codegen-units = 1 }
630ollama = { codegen-units = 1 }
631outline = { codegen-units = 1 }
632paths = { codegen-units = 1 }
633prettier = { codegen-units = 1 }
634project_symbols = { codegen-units = 1 }
635refineable = { codegen-units = 1 }
636release_channel = { codegen-units = 1 }
637reqwest_client = { codegen-units = 1 }
638rich_text = { codegen-units = 1 }
639semantic_version = { codegen-units = 1 }
640session = { codegen-units = 1 }
641snippet = { codegen-units = 1 }
642snippets_ui = { codegen-units = 1 }
643sqlez_macros = { codegen-units = 1 }
644story = { codegen-units = 1 }
645supermaven_api = { codegen-units = 1 }
646telemetry_events = { codegen-units = 1 }
647theme_selector = { codegen-units = 1 }
648time_format = { codegen-units = 1 }
649ui_input = { codegen-units = 1 }
650vcs_menu = { codegen-units = 1 }
651zed_actions = { codegen-units = 1 }
652
653[profile.release]
654debug = "limited"
655lto = "thin"
656codegen-units = 1
657
658[profile.release.package]
659zed = { codegen-units = 16 }
660
661[profile.release-fast]
662inherits = "release"
663debug = "full"
664lto = false
665codegen-units = 16
666
667[workspace.lints.clippy]
668dbg_macro = "deny"
669todo = "deny"
670
671# Motivation: We use `vec![a..b]` a lot when dealing with ranges in text, so
672# warning on this rule produces a lot of noise.
673single_range_in_vec_init = "allow"
674
675# These are all of the rules that currently have violations in the Zed
676# codebase.
677#
678# We'll want to drive this list down by either:
679# 1. fixing violations of the rule and begin enforcing it
680# 2. deciding we want to allow the rule permanently, at which point
681#    we should codify that separately above.
682#
683# This list shouldn't be added to; it should only get shorter.
684# =============================================================================
685
686# There are a bunch of rules currently failing in the `style` group, so
687# allow all of those, for now.
688style = { level = "allow", priority = -1 }
689
690# Temporary list of style lints that we've fixed so far.
691module_inception = { level = "deny" }
692question_mark = { level = "deny" }
693redundant_closure = { level = "deny" }
694# Individual rules that have violations in the codebase:
695type_complexity = "allow"
696# We often return trait objects from `new` functions.
697new_ret_no_self = { level = "allow" }
698# We have a few `next` functions that differ in lifetimes
699# compared to Iterator::next. Yet, clippy complains about those.
700should_implement_trait = { level = "allow" }
701let_underscore_future = "allow"
702
703[workspace.metadata.cargo-machete]
704ignored = ["bindgen", "cbindgen", "prost_build", "serde"]