Files
zed/Cargo.toml
Ben KunkleandTom Houlé 24a2823456 gpui_wgpu: Fix WebGL surface reconfiguration panics (#66190)
## Summary

Advance wgpu from `3b3506e` to `cddb2f5` to adopt gfx-rs/wgpu#10348
(reported in gfx-rs/wgpu#10341). Keep the shader-validation Naga
dependency at the same revision. The lockfile changes only the sources
of the 13 wgpu-family packages; package versions and other dependency
selections are unchanged.

WebGL fence waits use a zero timeout because browsers do not support an
indefinite client wait. A fence can therefore legitimately time out
while GPU work is pending. The old surface reconfiguration path treats
that timeout as unreachable and traps; the upstream fix handles it
without weakening the native teardown behavior. This revision also
retains the Vulkan teardown fix that required the existing Git
dependency.

## Verification

- `cargo test --locked -p gpui_wgpu --lib valid_wgsl`: all three shader
validation tests pass.
- `cargo tree --locked -p gpui_wgpu --target all --depth 1`: runtime
wgpu and shader-validation Naga resolve to the same revision.
- Minimal real Chromium/SwiftShader Wasm reproduction: the original
dependency traps at `wgpu-core/src/instance.rs:884` during repeated
present/reconfigure operations; the fixed dependency completes all 20
iterations.
- Downstream optimized Wasm build and Chromium WebGPU/WebGL
start-and-resize smoke tests passed using this exact Zed branch commit.
- Negative control: forcing the old wgpu dependency in the same app
makes the retained WebGL smoke test fail; the browser trace starts with
the exact `instance.rs:884:25` / `wait_indefinitely() should never
timeout` panic. Restoring the fixed dependency makes both backend cases
pass again.

## Review status

Draft only; do not land automatically. The repository-required README
review marker is intentionally left for human removal. This branch
starts at the downstream consumer's existing Zed pin, so its eventual
dependency update need not include unrelated intervening changes.

Release Notes:

- [GPUI] Fixed WebGL surface reconfiguration panics when resizing while
GPU work is pending.

---------

Co-authored-by: Tom Houlé <tom@tomhoule.com>
2026-10-27 14:07:55 +00:00

1211 lines
44 KiB
TOML

[workspace]
resolver = "2"
members = [
"crates/acp_thread",
"crates/acp_tools",
"crates/action_log",
"crates/activity_indicator",
"crates/agent",
"crates/agent_servers",
"crates/agent_settings",
"crates/agent_skills",
"crates/agent_ui",
"crates/agent_ui_benchmarks",
"crates/ai_onboarding",
"crates/anthropic",
"crates/askpass",
"crates/assets",
"crates/audio",
"crates/auto_update",
"crates/auto_update_helper",
"crates/auto_update_ui",
"crates/aws_http_client",
"crates/bedrock",
"crates/bench_metrics",
"crates/benchmarks",
"crates/breadcrumbs",
"crates/buffer_diff",
"crates/call",
"crates/call_hierarchy",
"crates/channel",
"crates/cli",
"crates/client",
"crates/clock",
"crates/cloud_api_client",
"crates/cloud_api_types",
"crates/cloud_llm_client",
"crates/codestral",
"crates/collab",
"crates/collab_ui",
"crates/collections",
"crates/command_palette",
"crates/command_palette_hooks",
"crates/component",
"crates/component_preview",
"crates/context_server",
"crates/copilot",
"crates/copilot_chat",
"crates/crashes",
"crates/credentials_provider",
"crates/dap",
"crates/dap_adapters",
"crates/db",
"crates/debug_adapter_extension",
"crates/debugger_tools",
"crates/debugger_ui",
"crates/deepseek",
"crates/dev_container",
"crates/diagnostics",
"crates/docs_preprocessor",
"crates/edit_prediction",
"crates/edit_prediction_cli",
"crates/edit_prediction_context",
"crates/edit_prediction_metrics",
"crates/edit_prediction_types",
"crates/edit_prediction_ui",
"crates/editor",
"crates/editor_benchmarks",
"crates/encoding_selector",
"crates/env_var",
"crates/etw_tracing",
"crates/eval_cli",
"crates/eval_utils",
"crates/explorer_command_injector",
"crates/extension",
"crates/extension_api",
"crates/extension_cli",
"crates/extension_host",
"crates/extension_suggest",
"crates/extensions_ui",
"crates/feature_flags",
"crates/feature_flags_macros",
"crates/feedback",
"crates/file_content",
"crates/file_finder",
"crates/file_icons",
"crates/fs",
"crates/fs_benchmarks",
"crates/fuzzy",
"crates/fuzzy_nucleo",
"crates/git",
"crates/git_hosting_providers",
"crates/git_ui",
"crates/git_ui_core",
"crates/go_to_line",
"crates/google_ai",
"crates/gpui",
"crates/gpui_apple",
"crates/gpui_ios",
"crates/gpui_linux",
"crates/gpui_macos",
"crates/gpui_macros",
"crates/gpui_platform",
"crates/gpui_shared_string",
"crates/gpui_tokio",
"crates/gpui_util",
"crates/gpui_web",
"crates/gpui_wgpu",
"crates/gpui_windows",
"crates/grammars",
"crates/hang_telemetry",
"crates/html_to_markdown",
"crates/http_client",
"crates/http_client_tls",
"crates/http_proxy",
"crates/icons",
"crates/image_viewer",
"crates/input_latency_ui",
"crates/inspector_ui",
"crates/install_cli",
"crates/journal",
"crates/json_schema_store",
"crates/keymap_editor",
"crates/language",
"crates/language_core",
"crates/language_detection",
"crates/language_extension",
"crates/language_model",
"crates/language_model_core",
"crates/language_models",
"crates/language_models_cloud",
"crates/language_onboarding",
"crates/language_selector",
"crates/language_tools",
"crates/languages",
"crates/line_ending_selector",
"crates/livekit_api",
"crates/livekit_client",
"crates/llama_cpp",
"crates/lmstudio",
"crates/lsp",
"crates/lsp_command_selector",
"crates/lsp_locations",
"crates/markdown",
"crates/markdown_preview",
"crates/menu",
"crates/mermaid_render",
"crates/migrator",
"crates/miniprofiler_ui",
"crates/mistral",
"crates/multi_buffer",
"crates/net",
"crates/node_runtime",
"crates/notifications",
"crates/oauth_callback_server",
"crates/ollama",
"crates/onboarding",
"crates/open_ai",
"crates/open_path_prompt",
"crates/open_router",
"crates/openai_subscribed",
"crates/opencode",
"crates/outline",
"crates/outline_panel",
"crates/path",
"crates/paths",
"crates/picker",
"crates/picker_preview",
"crates/platform_title_bar",
"crates/prettier",
"crates/project",
"crates/project_benchmarks",
"crates/project_panel",
"crates/project_symbols",
"crates/prompt_store",
"crates/proto",
"crates/proxy_handshake",
"crates/recent_projects",
"crates/refineable",
"crates/refineable/derive_refineable",
"crates/release_channel",
"crates/remote",
"crates/remote_connection",
"crates/remote_server",
"crates/repl",
"crates/reqwest_client",
"crates/rope",
"crates/rpc",
"crates/sandbox",
"crates/scheduler",
"crates/schema_generator",
"crates/search",
"crates/session",
"crates/settings",
"crates/settings_content",
"crates/settings_json",
"crates/settings_macros",
"crates/settings_profile_selector",
"crates/settings_ui",
"crates/shell_command_parser",
"crates/sidebar",
"crates/snippet",
"crates/snippet_provider",
"crates/snippets_ui",
"crates/sqlez",
"crates/sqlez_macros",
"crates/streaming_diff",
"crates/sum_tree",
"crates/svg_preview",
"crates/syntax_theme",
"crates/system_specs",
"crates/tab_switcher",
"crates/tabular_data_preview",
"crates/task",
"crates/tasks_ui",
"crates/telemetry",
"crates/telemetry_events",
"crates/terminal",
"crates/terminal_view",
"crates/text",
"crates/theme",
"crates/theme_extension",
"crates/theme_importer",
"crates/theme_selector",
"crates/theme_settings",
"crates/time_format",
"crates/title_bar",
"crates/toolchain_selector",
"crates/ui",
"crates/ui_input",
"crates/ui_macros",
"crates/ui_prompt",
"crates/util",
"crates/util_macros",
"crates/vim",
"crates/vim_mode_setting",
"crates/watch",
"crates/web_search",
"crates/web_search_providers",
"crates/which_key",
"crates/windows_resources",
"crates/workspace",
"crates/worktree",
"crates/worktree_benchmarks",
"crates/x_ai",
"crates/x_ai_subscribed",
"crates/zed",
"crates/zed_actions",
"crates/zed_credentials_provider",
"crates/zed_env_vars",
"crates/zeta_prompt",
"crates/zlog",
"crates/zlog_settings",
"crates/ztracing",
"crates/ztracing_macro",
#
# Extensions
#
"extensions/glsl",
"extensions/html",
"extensions/proto",
"extensions/test-extension",
#
# Tooling
#
"tooling/compliance",
"tooling/perf",
"tooling/xtask",
]
default-members = ["crates/zed"]
[workspace.package]
publish = false
edition = "2024"
[workspace.dependencies]
#
# Workspace member crates
#
acp_thread = { path = "crates/acp_thread" }
acp_tools = { path = "crates/acp_tools" }
action_log = { path = "crates/action_log" }
activity_indicator = { path = "crates/activity_indicator" }
agent = { path = "crates/agent" }
agent_servers = { path = "crates/agent_servers" }
agent_settings = { path = "crates/agent_settings" }
agent_skills = { path = "crates/agent_skills" }
agent_ui = { path = "crates/agent_ui" }
ai_onboarding = { path = "crates/ai_onboarding" }
anthropic = { path = "crates/anthropic" }
askpass = { path = "crates/askpass" }
assets = { path = "crates/assets" }
audio = { path = "crates/audio" }
bench_metrics = { path = "crates/bench_metrics" }
auto_update = { path = "crates/auto_update" }
auto_update_ui = { path = "crates/auto_update_ui" }
aws_http_client = { path = "crates/aws_http_client" }
bedrock = { path = "crates/bedrock" }
breadcrumbs = { path = "crates/breadcrumbs" }
buffer_diff = { path = "crates/buffer_diff" }
call = { path = "crates/call" }
call_hierarchy = { path = "crates/call_hierarchy" }
channel = { path = "crates/channel" }
cli = { path = "crates/cli", default-features = false }
client = { path = "crates/client" }
clock = { path = "crates/clock" }
cloud_api_client = { path = "crates/cloud_api_client" }
cloud_api_types = { path = "crates/cloud_api_types" }
cloud_llm_client = { path = "crates/cloud_llm_client" }
codestral = { path = "crates/codestral" }
collab = { path = "crates/collab" }
collab_ui = { path = "crates/collab_ui" }
collections = { path = "crates/collections", version = "0.1.0" }
command_palette = { path = "crates/command_palette" }
command_palette_hooks = { path = "crates/command_palette_hooks" }
compliance = { path = "tooling/compliance" }
component = { path = "crates/component" }
component_preview = { path = "crates/component_preview" }
context_server = { path = "crates/context_server" }
copilot = { path = "crates/copilot" }
copilot_chat = { path = "crates/copilot_chat" }
copilot_ui = { path = "crates/copilot_ui" }
crashes = { path = "crates/crashes" }
credentials_provider = { path = "crates/credentials_provider" }
dap = { path = "crates/dap" }
dap_adapters = { path = "crates/dap_adapters" }
db = { path = "crates/db" }
debug_adapter_extension = { path = "crates/debug_adapter_extension" }
debugger_tools = { path = "crates/debugger_tools" }
debugger_ui = { path = "crates/debugger_ui" }
deepseek = { path = "crates/deepseek" }
derive_refineable = { path = "crates/refineable/derive_refineable" }
dev_container = { path = "crates/dev_container" }
diagnostics = { path = "crates/diagnostics" }
edit_prediction = { path = "crates/edit_prediction" }
edit_prediction_context = { path = "crates/edit_prediction_context" }
edit_prediction_metrics = { path = "crates/edit_prediction_metrics", features = ["tree-sitter"] }
edit_prediction_types = { path = "crates/edit_prediction_types" }
edit_prediction_ui = { path = "crates/edit_prediction_ui" }
editor = { path = "crates/editor" }
encoding_selector = { path = "crates/encoding_selector" }
env_var = { path = "crates/env_var" }
etw_tracing = { path = "crates/etw_tracing" }
eval_utils = { path = "crates/eval_utils" }
extension = { path = "crates/extension" }
extension_host = { path = "crates/extension_host" }
extension_suggest = { path = "crates/extension_suggest" }
extensions_ui = { path = "crates/extensions_ui" }
feature_flags = { path = "crates/feature_flags" }
feature_flags_macros = { path = "crates/feature_flags_macros" }
feedback = { path = "crates/feedback" }
file_content = { path = "crates/file_content" }
file_finder = { path = "crates/file_finder" }
file_icons = { path = "crates/file_icons" }
fs = { path = "crates/fs" }
fuzzy = { path = "crates/fuzzy" }
fuzzy_nucleo = { path = "crates/fuzzy_nucleo" }
git = { path = "crates/git" }
git_hosting_providers = { path = "crates/git_hosting_providers" }
git_ui = { path = "crates/git_ui" }
git_ui_core = { path = "crates/git_ui_core" }
go_to_line = { path = "crates/go_to_line" }
google_ai = { path = "crates/google_ai" }
gpui = { path = "crates/gpui", default-features = false }
gpui_apple = { path = "crates/gpui_apple" }
gpui_ios = { path = "crates/gpui_ios" }
gpui_linux = { path = "crates/gpui_linux", default-features = false }
gpui_macos = { path = "crates/gpui_macos", default-features = false }
gpui_macros = { path = "crates/gpui_macros" }
gpui_platform = { path = "crates/gpui_platform", default-features = false }
gpui_shared_string = { path = "crates/gpui_shared_string" }
gpui_tokio = { path = "crates/gpui_tokio" }
gpui_util = { path = "crates/gpui_util" }
gpui_web = { path = "crates/gpui_web", default-features = false }
gpui_wgpu = { path = "crates/gpui_wgpu" }
gpui_windows = { path = "crates/gpui_windows", default-features = false }
grammars = { path = "crates/grammars" }
hang_telemetry = { path = "crates/hang_telemetry" }
html_to_markdown = { path = "crates/html_to_markdown" }
http_client = { path = "crates/http_client" }
http_client_tls = { path = "crates/http_client_tls" }
http_proxy = { path = "crates/http_proxy" }
icons = { path = "crates/icons" }
image_viewer = { path = "crates/image_viewer" }
input_latency_ui = { path = "crates/input_latency_ui" }
inspector_ui = { path = "crates/inspector_ui" }
install_cli = { path = "crates/install_cli" }
journal = { path = "crates/journal" }
json_schema_store = { path = "crates/json_schema_store" }
keymap_editor = { path = "crates/keymap_editor" }
language = { path = "crates/language" }
language_core = { path = "crates/language_core" }
language_detection = { path = "crates/language_detection" }
language_extension = { path = "crates/language_extension" }
language_model = { path = "crates/language_model" }
language_model_core = { path = "crates/language_model_core" }
language_models = { path = "crates/language_models" }
language_models_cloud = { path = "crates/language_models_cloud" }
language_onboarding = { path = "crates/language_onboarding" }
language_selector = { path = "crates/language_selector" }
language_tools = { path = "crates/language_tools" }
languages = { path = "crates/languages" }
line_ending_selector = { path = "crates/line_ending_selector" }
livekit_api = { path = "crates/livekit_api" }
livekit_client = { path = "crates/livekit_client" }
llama_cpp = { path = "crates/llama_cpp" }
lmstudio = { path = "crates/lmstudio" }
lsp = { path = "crates/lsp" }
lsp_command_selector = { path = "crates/lsp_command_selector" }
lsp_locations = { path = "crates/lsp_locations" }
markdown = { path = "crates/markdown" }
markdown_preview = { path = "crates/markdown_preview" }
menu = { path = "crates/menu" }
mermaid_render = { path = "crates/mermaid_render" }
migrator = { path = "crates/migrator" }
miniprofiler_ui = { path = "crates/miniprofiler_ui" }
mistral = { path = "crates/mistral" }
multi_buffer = { path = "crates/multi_buffer" }
net = { path = "crates/net" }
node_runtime = { path = "crates/node_runtime" }
notifications = { path = "crates/notifications" }
oauth_callback_server = { path = "crates/oauth_callback_server" }
ollama = { path = "crates/ollama" }
onboarding = { path = "crates/onboarding" }
open_ai = { path = "crates/open_ai" }
open_path_prompt = { path = "crates/open_path_prompt" }
open_router = { path = "crates/open_router", features = ["schemars"] }
openai_subscribed = { path = "crates/openai_subscribed" }
opencode = { path = "crates/opencode" }
outline = { path = "crates/outline" }
outline_panel = { path = "crates/outline_panel" }
path = { path = "crates/path" }
paths = { path = "crates/paths" }
perf = { path = "tooling/perf", default-features = false }
picker = { path = "crates/picker" }
picker_preview = { path = "crates/picker_preview" }
platform_title_bar = { path = "crates/platform_title_bar" }
prettier = { path = "crates/prettier" }
project = { path = "crates/project" }
project_panel = { path = "crates/project_panel" }
project_symbols = { path = "crates/project_symbols" }
prompt_store = { path = "crates/prompt_store" }
proto = { path = "crates/proto" }
proxy_handshake = { path = "crates/proxy_handshake" }
recent_projects = { path = "crates/recent_projects" }
refineable = { path = "crates/refineable" }
release_channel = { path = "crates/release_channel" }
remote = { path = "crates/remote" }
remote_connection = { path = "crates/remote_connection" }
remote_server = { path = "crates/remote_server" }
repl = { path = "crates/repl" }
reqwest_client = { path = "crates/reqwest_client" }
rodio = { git = "https://github.com/RustAudio/rodio", rev = "3ee9745862279ce1d18db593155016e7ce024aeb", default-features = false, features = ["wav", "playback", "wav_output", "recording"] }
rope = { path = "crates/rope" }
rpc = { path = "crates/rpc" }
sandbox = { path = "crates/sandbox" }
scheduler = { path = "crates/scheduler" }
search = { path = "crates/search" }
session = { path = "crates/session" }
settings = { path = "crates/settings" }
settings_content = { path = "crates/settings_content" }
settings_json = { path = "crates/settings_json", default-features = false }
settings_macros = { path = "crates/settings_macros" }
settings_profile_selector = { path = "crates/settings_profile_selector" }
settings_ui = { path = "crates/settings_ui" }
shell_command_parser = { path = "crates/shell_command_parser" }
sidebar = { path = "crates/sidebar" }
snippet = { path = "crates/snippet" }
snippet_provider = { path = "crates/snippet_provider" }
snippets_ui = { path = "crates/snippets_ui" }
sqlez = { path = "crates/sqlez" }
sqlez_macros = { path = "crates/sqlez_macros" }
streaming_diff = { path = "crates/streaming_diff" }
sum_tree = { path = "crates/sum_tree" }
svg_preview = { path = "crates/svg_preview" }
syntax_theme = { path = "crates/syntax_theme" }
system_specs = { path = "crates/system_specs" }
tab_switcher = { path = "crates/tab_switcher" }
tabular_data_preview = { path = "crates/tabular_data_preview"}
task = { path = "crates/task" }
tasks_ui = { path = "crates/tasks_ui" }
telemetry = { path = "crates/telemetry" }
telemetry_events = { path = "crates/telemetry_events" }
terminal = { path = "crates/terminal" }
terminal_view = { path = "crates/terminal_view" }
text = { path = "crates/text" }
theme = { path = "crates/theme" }
theme_extension = { path = "crates/theme_extension" }
theme_selector = { path = "crates/theme_selector" }
theme_settings = { path = "crates/theme_settings" }
time_format = { path = "crates/time_format" }
title_bar = { path = "crates/title_bar" }
toolchain_selector = { path = "crates/toolchain_selector" }
ui = { path = "crates/ui" }
ui_input = { path = "crates/ui_input" }
ui_macros = { path = "crates/ui_macros" }
ui_prompt = { path = "crates/ui_prompt" }
util = { path = "crates/util" }
util_macros = { path = "crates/util_macros" }
vim = { path = "crates/vim" }
vim_mode_setting = { path = "crates/vim_mode_setting" }
watch = { path = "crates/watch" }
web_search = { path = "crates/web_search" }
web_search_providers = { path = "crates/web_search_providers" }
which_key = { path = "crates/which_key" }
windows_resources = { path = "crates/windows_resources" }
workspace = { path = "crates/workspace" }
worktree = { path = "crates/worktree" }
x_ai = { path = "crates/x_ai" }
x_ai_subscribed = { path = "crates/x_ai_subscribed" }
zed_actions = { path = "crates/zed_actions" }
zed_credentials_provider = { path = "crates/zed_credentials_provider" }
zed_env_vars = { path = "crates/zed_env_vars" }
zeta_prompt = { path = "crates/zeta_prompt" }
zlog = { path = "crates/zlog" }
zlog_settings = { path = "crates/zlog_settings" }
ztracing = { path = "crates/ztracing" }
ztracing_macro = { path = "crates/ztracing_macro" }
#
# External crates
#
accesskit = { version = "0.24.0", features = ["enumn"] }
accesskit_macos = "0.26.0"
accesskit_unix = "0.22"
accesskit_windows = "0.34"
agent-client-protocol = { version = "=3.5.0", features = ["schemars", "unstable", "unstable_protocol_v2"] }
aho-corasick = "1.1"
alacritty_terminal = { git = "https://github.com/zed-industries/alacritty", rev = "4c129667ce56611becdc82de6e28218c80e2e88f" }
any_vec = "0.14"
anyhow = "1.0.86"
arc-swap = "1.9.0"
ashpd = { version = "0.13", default-features = false, features = [
"async-io",
"inhibit",
"open_uri",
"file_chooser",
"settings"
] }
async-channel = { version = "2.5", default-features = false }
async-compat = "0.2.1"
async-compression = { version = "0.4", features = ["bzip2", "gzip", "futures-io"] }
async-dispatcher = "0.1"
async-fs = "2.1"
async-io = "2.6.0"
async-lock = { version = "3.4", default-features = false }
async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
# `unstable` is required to compile async-tar's Windows symlink support.
async-process = "2.5.0"
async-recursion = "1.0.0"
async-std = { version = "1.12", features = ["unstable"] }
async-tar = { git = "https://github.com/zed-industries/async-tar", rev = "bd3ad6f89df9a9da7a8535958756d6bf465936a0" }
async-task = "4.7"
async-trait = "0.1"
async-tungstenite = "0.33"
async_zip = { version = "0.0.18", features = ["deflate", "deflate64"] }
aws-config = { version = "1.8.10", default-features = false, features = [
"behavior-version-latest",
"credentials-process",
"rt-tokio",
"sso",
] }
aws-credential-types = { version = "1.2.8", features = [
"hardcoded-credentials",
] }
aws-sdk-bedrockruntime = { version = "1.112.0", default-features = false, features = [
"behavior-version-latest",
"rt-tokio",
] }
aws-sdk-kinesis = { version = "1.51", default-features = false }
aws-sdk-s3 = { version = "1.15", default-features = false }
aws-sigv4 = { version = "1.4.0", features = ["http1"] }
aws-smithy-runtime-api = { version = "1.9.2", features = ["http-1x", "client"] }
aws-smithy-types = { version = "1.3.4", features = ["http-body-1-x"] }
backtrace = "0.3"
base64 = "0.22"
betlang = "0.1.1"
bitflags = "2.6.0"
block2 = "0.6"
brush-parser = "0.3"
bytemuck = "1"
bytes = "1.0"
cargo_metadata = "0.23"
cargo_toml = "0.21"
cbindgen = { version = "0.28.0", default-features = false }
chardetng = "0.1"
chrono = { version = "0.4", default-features = false, features = ["std", "serde"] }
ciborium = "0.2"
clap = { version = "4.4", features = ["derive", "wrap_help"] }
clap_complete = "4.4"
clap_complete_nushell = "4.4"
console = "0.16"
console_error_panic_hook = "0.1.7"
const_format = "0.2"
convert_case = "0.11.0"
core-foundation = "0.10"
core-foundation-sys = "0.8.6"
core-graphics = "0.24"
core-services = "1"
core-text = "21"
coreaudio-rs = { version = "0.12", default-features = false }
cpal = { git = "https://github.com/RustAudio/cpal", rev = "e1612d5d98152f8dc2a62e1b51ef7cbf4f7f26b7" }
crash-handler = "0.8"
criterion = { version = "0.8.2", features = ["html_reports"] }
perf-event = { package = "perf-event2", version = "0.7.4" }
crossbeam-queue = "0.3.12"
ctor = "1.0.12"
dap-types = { git = "https://github.com/zed-industries/dap-types", rev = "1b461b310481d01e02b2603c16d7144b926339f8" }
dashmap = "6.0"
derive_more = { version = "2.1", features = ["deref", "deref_mut", "from_str"] }
dialoguer = { version = "0.12", default-features = false }
diffy = "0.4.2"
dirs = "6.0"
dispatch2 = { version = "0.3", default-features = false, features = ["std"] }
documented = "0.10"
dotenvy = "0.15.0"
dunce = "1.0"
ec4rs = { version = "1.2", features = ["allow-empty-values"] }
emojis = "0.9"
encoding_rs = "0.8"
env_logger = "0.11"
etagere = "0.2"
exec = "0.3.1"
fancy-regex = "0.19"
flume = { version = "0.12", default-features = false, features = ["async"] }
font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "94b0f28166665e8fd2f53ff6d268a14955c82269", package = "zed-font-kit", version = "0.14.1-zed", default-features = false }
foreign-types = "0.5"
fork = "0.4.0"
futures = "0.3.34"
futures-concurrency = "7.7.1"
futures-lite = "2"
gh-workflow = { git = "https://github.com/zed-industries/gh-workflow", rev = "37f3c0575d379c218a9c455ee67585184e40d43f" }
globset = "0.4"
handlebars = "4.3"
hdrhistogram = { version = "7", default-features = false }
heapless = "0.9.2"
heck = "0.5"
heed = { version = "0.21", default-features = false, features = ["read-txn-no-tls", "serde-bincode", "serde-json"] }
hex = "0.4.3"
html5ever = "0.39"
http = "1.1"
http-body = "1.0"
httparse = "1.10"
human_bytes = "0.4.1"
idna = "1.0"
ignore = "0.4.22"
# image's default features minus "avif", which only adds an encoder (rav1e);
# decoding AVIF would additionally need the non-default "avif-native" feature.
image = { version = "0.25.1", default-features = false, features = [
"bmp",
"dds",
"exr",
"ff",
"gif",
"hdr",
"ico",
"jpeg",
"png",
"pnm",
"qoi",
"rayon",
"tga",
"tiff",
"webp",
] }
imara-diff = { version = "0.2", default-features = false }
indexmap = { version = "2.7.0", features = ["serde"] }
indoc = "2"
inventory = "0.3.19"
is_executable = "1.0"
itertools = "0.14.0"
js-sys = "0.3"
jsonschema = { version = "0.51", default-features = false }
jsonwebtoken = { version = "10.0", default-features = false }
jupyter-protocol = "1.4.0"
jupyter-websocket-client = "1.1.0"
libc = "0.2"
libsqlite3-sys = { version = "0.30.1", features = ["bundled"] }
libwebrtc = "0.3.26"
linkify = "0.10.0"
livekit = { version = "0.7.32", features = ["tokio", "rustls-tls-native-roots"] }
log = { version = "0.4", default-features = false, features = ["std"] }
lru = "0.16"
lsp-types = { git = "https://github.com/zed-industries/lsp-types", rev = "82d7fc66ebdfabcfeb26ba16bbed9f3d26211fc3" }
mach2 = "0.6"
markup5ever_rcdom = "0.39"
mdbook = { version = "=0.4.40", default-features = false, features = ["search"] }
merman = { version = "=0.8.0-alpha.5", default-features = false }
mime = "0.3.17"
minidumper = "0.11"
moka = { version = "0.12.10", features = ["sync"] }
nanoid = "0.4"
nbformat = "1.2.0"
nix = "0.30"
notify-rust = "4"
nucleo = { package = "nucleo-matcher", version = "0.3" }
objc2 = "0.6"
objc2-ui-kit = { version = "0.3.2", default-features = false, features = [
"std",
"block2",
"objc2-quartz-core",
"objc2-core-foundation",
"NSText",
"UIApplication",
"UICommand",
"UICornerConfiguration",
"UICornerRadius",
"UIEvent",
"UIGeometry",
"UIGestureRecognizer",
"UIPanGestureRecognizer",
"UIScreenEdgePanGestureRecognizer",
"UIInterface",
"UIOpenURLContext",
"UIPasteboard",
"UIResponder",
"UIScene",
"UISceneConfiguration",
"UISceneDefinitions",
"UISceneOptions",
"UISceneSession",
"UIScreen",
"UITextInput",
"UITextInputTraits",
"UITouch",
"UITraitCollection",
"UIView",
"UIViewController",
"UIWindow",
"UIWindowScene",
] }
objc2-app-kit = { version = "0.3.2", default-features = false, features = [
"NSAlert",
"NSAppearance",
"NSApplication",
"NSButton",
"NSCell",
"NSColor",
"NSControl",
"NSCursor",
"NSDocumentController",
"NSDragging",
"NSDraggingItem",
"NSEvent",
"NSGraphics",
"NSImage",
"NSMenu",
"NSMenuItem",
"NSOpenPanel",
"NSPanel",
"NSPasteboard",
"NSResponder",
"NSRunningApplication",
"NSSavePanel",
"NSScreen",
"NSScroller",
"NSTrackingArea",
"NSView",
"NSVisualEffectView",
"NSWindow",
"NSWorkspace",
"block2",
"objc2-core-foundation",
] }
objc2-core-foundation = { version = "=0.3.2", default-features = false }
objc2-core-graphics = { version = "=0.3.2", default-features = false, features = ["CGDirectDisplay"] }
objc2-core-media = { version = "=0.3.2", default-features = false, features = ["CMSampleBuffer", "objc2-core-video"] }
objc2-core-text = { version = "0.3.2", default-features = false, features = ["std", "CTFont", "CTFontDescriptor"] }
objc2-core-video = { version = "=0.3.2", default-features = false, features = ["CVBuffer", "CVImageBuffer"] }
objc2-foundation = { version = "=0.3.2", default-features = false, features = [
"NSArray",
"NSAttributedString",
"NSBundle",
"NSCoder",
"NSData",
"NSDate",
"NSDictionary",
"NSEnumerator",
"NSError",
"NSGeometry",
"NSNull",
"NSObjCRuntime",
"NSObject",
"NSProcessInfo",
"NSRange",
"NSRunLoop",
"NSSet",
"NSString",
"NSURL",
"NSValue",
"objc2-core-foundation",
"std",
] }
objc2-security = { version = "0.3.2", default-features = false, features = ["std", "SecBase", "SecItem"] }
objc2-quartz-core = { version = "=0.3.2", default-features = false, features = ["std", "CALayer", "CAMetalLayer"] }
objc2-screen-capture-kit = { version = "=0.3.2", default-features = false, features = [
"block2",
"dispatch2",
"objc2-core-graphics",
"objc2-core-media",
"SCShareableContent",
"SCStream",
"std"
] }
objc2-uniform-type-identifiers = { version = "0.3", default-features = false, features = ["std", "UTCoreTypes", "UTType"] }
objc2-user-notifications = { version = "0.3", default-features = false, features = [
"std",
"block2",
"UNNotification",
"UNNotificationAction",
"UNNotificationCategory",
"UNNotificationContent",
"UNNotificationRequest",
"UNNotificationResponse",
"UNNotificationTrigger",
"UNUserNotificationCenter",
] }
octocrab = { version = "0.49", default-features = false }
oo7 = { git = "https://github.com/zed-industries/oo7", rev = "731c1215edb6905876c6137ab300428c7b8d7c13", version = "0.6", default-features = false }
open = "5.0.0"
ordered-float = "5"
palette = { version = "0.7.5", default-features = false, features = ["std"] }
parking_lot = "0.12.1"
parse_int = "0.9"
partial-json-fixer = "0.5.3"
pathfinder_geometry = "0.5"
pciid-parser = "0.8.0"
percent-encoding = "2.3.2"
pet = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-conda = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-core = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-fs = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-poetry = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-reporter = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
pet-virtualenv = { git = "https://github.com/zed-industries/python-environment-tools.git", rev = "5aad7164bfc2a58977b103c8ef8fdd7302ed2e9f" }
piper = "0.2"
plist = "1.3"
postage = { version = "0.5", default-features = false }
pretty_assertions = { version = "1.3.0", features = ["unstable"] }
proc-macro2 = "1.0.93"
profiling = "1"
# replace this with main when #635 is merged
pollster = "0.4.0"
proptest = { version = "1.12.0", features = ["attr-macro"] }
proptest-derive = "0.8.0"
prost = "0.14"
prost-build = { version = "0.14", default-features = false }
prost-types = "0.14"
protox = "0.9"
proxyvars = "0.2"
pulldown-cmark = { version = "0.13.0", default-features = false }
quick-xml = "0.41"
quote = "1.0.9"
rand = { version = "0.9", default-features = false, features = ["std", "std_rng", "os_rng"] }
raw-window-handle = "0.6"
rayon = "1.8"
regex = { version = "1.5", default-features = false, features = ["std", "perf"] }
# 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 = "33bc764aa15ff7b200bf7c93bd96e24878d53e14", default-features = false, features = [
"http2",
"macos-system-configuration",
"rustls-tls-native-roots",
"socks",
"stream",
], package = "zed-reqwest", version = "0.12.15-zed" }
resvg = { version = "0.46.0", default-features = false, features = [
"text",
"system-fonts",
"memmap-fonts",
"raster-images",
] }
rsa = { version = "0.9", default-features = false, features = ["std", "u64_digit"] }
runtimelib = { version = "1.4.0", default-features = false, features = [
"async-dispatcher-runtime", "aws-lc-rs"
] }
rust-embed = { version = "8.11", features = ["include-exclude", "compression"] }
rustc-hash = "2.1.0"
rustix = { version = "1.1", features = ["fs"] }
rustls = "0.23.26"
rustls-platform-verifier = "0.7"
# 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 = "b5c86ec58dd4b6b7732bf6ac8be03d6b1f190a82", default-features = false, package = "zed-scap", version = "0.0.8-zed" }
schemars = { version = "1.0", default-features = false, features = ["std", "indexmap2"] }
sea-orm = { version = "=1.1.10", default-features = false }
seccompiler = "0.5"
semver = { version = "1.0", features = ["serde"] }
serde = { version = "1.0", features = ["rc"] }
serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] }
serde_json_lenient = { version = "0.2", features = [
"preserve_order",
"raw_value",
] }
serde_path_to_error = "0.1.17"
serde_urlencoded = "0.7"
serde_yaml = { package = "serde_yaml_ng", version = "0.10" }
serde_yaml_ng = "0.10"
sha2 = "0.10"
shellexpand = "3.1"
shlex = "2.0"
similar = "2.7"
simplelog = { version = "0.12", default-features = false }
slotmap = "1.0.6"
smallvec = { version = "1.6", features = ["union", "const_new"] }
spin = { version = "0.10", default-features = false, features = ["mutex", "spin_mutex", "lock_api"] }
smol = "2.0"
sqlformat = "0.2"
sqlx = { version = "0.8", default-features = false }
stacksafe = "1.0"
streaming-iterator = "0.1"
strsim = "0.11"
strum = { version = "0.28", features = ["derive"] }
swash = "0.2.6"
syn = { version = "2.0", default-features = false, features = ["proc-macro"] }
sys-locale = "0.3.1"
sysinfo = { version = "0.39", default-features = false, features = ["system"] }
taffy = { version = "=0.15.0", default-features = false }
tempfile = "3.20.0"
tendril = "0.5"
thiserror = "2.0.12"
time = { version = "0.3", features = [
"macros",
"parsing",
"serde",
"serde-well-known",
"formatting",
"local-offset",
] }
tiny_http = "0.12"
tokio = "1"
tokio-rustls = { version = "0.26", default-features = false }
toml = { version = "0.9", default-features = false, features = ["std", "serde", "parse"] }
toml_edit = { version = "0.22", default-features = false, features = ["parse"] }
tower-http = "0.4.4"
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "803c6ebaac27d69e1808b45058482e868d073ceb" }
tracing = "0.1.40"
tracing-subscriber = "0.3"
tree-sitter-bash = "0.25.1"
tree-sitter-c = "0.24.1"
tree-sitter-cpp = { git = "https://github.com/tree-sitter/tree-sitter-cpp", rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609" }
tree-sitter-css = "0.23"
tree-sitter-diff = "0.1.0"
tree-sitter-elixir = "0.3"
tree-sitter-embedded-template = "0.23.0"
tree-sitter-gitcommit = { git = "https://github.com/zed-industries/tree-sitter-git-commit", rev = "88309716a69dd13ab83443721ba6e0b491d37ee9" }
tree-sitter-go = { git = "https://github.com/zed-industries/tree-sitter-go", rev = "6862a49e3c5a7567a6c576420e9a8f944e198a85" }
tree-sitter-go-mod = { git = "https://github.com/camdencheek/tree-sitter-go-mod", rev = "2e886870578eeba1927a2dc4bd2e2b3f598c5f9a", package = "tree-sitter-gomod" }
tree-sitter-gowork = { git = "https://github.com/zed-industries/tree-sitter-go-work", rev = "acb0617bf7f4fda02c6217676cc64acb89536dc7" }
tree-sitter-heex = { git = "https://github.com/zed-industries/tree-sitter-heex", rev = "1dd45142fbb05562e35b2040c6129c9bca346592" }
tree-sitter-html = "0.23"
tree-sitter-jsdoc = "0.23"
tree-sitter-json = "0.24"
tree-sitter-md = { git = "https://github.com/zed-industries/tree-sitter-markdown", rev = "b596e737286780d7bfa9fcddceaeeb754574b352" } # fork of 9a23c1a with serialize() buffer-overflow fix; https://github.com/tree-sitter-grammars/tree-sitter-markdown/issues/243
tree-sitter-python = "0.25"
tree-sitter-regex = "0.24"
tree-sitter-ruby = "0.23"
tree-sitter-rust = "0.24.2"
tree-sitter-typescript = { git = "https://github.com/zed-industries/tree-sitter-typescript", rev = "e2c53597d6a5d9cf7bbe8dccde576fe1e46c5899" } # https://github.com/tree-sitter/tree-sitter-typescript/pull/347
tree-sitter-yaml = { git = "https://github.com/zed-industries/tree-sitter-yaml", rev = "baff0b51c64ef6a1fb1f8390f3ad6015b83ec13a" }
unicase = "2.6"
unicode-bidi = { version = "0.3.18", default-features = false, features = [
"hardcoded-data",
] }
unicode-script = "0.5.7"
unicode-segmentation = "1.10"
unicode-width = "0.2"
unindent = "0.2.0"
url = "2.2"
urlencoding = "2.1.2"
usvg = { version = "0.46.0", default-features = false }
uuid = { version = "1.1", features = ["serde"] }
vte = { version = "0.15.0", features = ["ansi"] }
walkdir = "2.5"
wasm-encoder = "0.254"
# Forked because upstream is unmaintained and its worker bootstrap still calls
# the wasm-bindgen init function with the positional arguments deprecated in 0.2.93.
wasm_thread = { git = "https://github.com/zed-industries/wasm_thread", rev = "0cf96c7708dfb97ccf3da50347e25edcf75d6937", version = "0.3", features = ["es_modules"] }
wasmparser = "0.254"
wasmtime = { version = "48.0.7", default-features = false, features = [
"anyhow",
"async",
"demangle",
"runtime",
"cranelift",
"component-model",
"incremental-cache",
"parallel-compilation",
] }
wasm-bindgen = "0.2.120"
wasm-bindgen-futures = "0.4"
wasmtime-wasi = { version = "48.0.7", default-features = false, features = ["p2"] }
wax = { version = "0.7", default-features = false }
web-sys = "0.3"
web-time = "1.1.0"
webpki-roots = "1.0.10"
webrtc-sys = "0.3.23"
# 30.0.1 lacks the Vulkan surface-drop fix (wgpu#10230) and WebGL resize fix (wgpu#10348).
wgpu = { git = "https://github.com/gfx-rs/wgpu", rev = "cddb2f5d80dc0009b2ef6767635140cacf90a007", default-features = false }
which = "8"
windows-core = "0.62"
windows-registry = "0.6.0"
xkbcommon = { version = "0.8", default-features = false }
yaml-rust2 = { version = "0.8", default-features = false }
yawc = { version = "0.4", default-features = false }
zeroize = "1.8"
zstd = { version = "0.13", default-features = false, features = ["legacy", "arrays"] }
[workspace.dependencies.windows]
version = "0.62"
features = [
"Win32_Foundation",
"Win32_Graphics_Gdi",
"Win32_Security",
"Win32_Storage_FileSystem",
"Win32_System_Com",
"Win32_System_Com_StructuredStorage",
"Win32_System_IO",
"Win32_System_LibraryLoader",
"Win32_System_Ole",
"Win32_System_Threading",
"Win32_System_Variant",
"Win32_UI_Shell",
"Win32_UI_Shell_Common",
"Win32_UI_Shell_PropertiesSystem",
"Win32_UI_WindowsAndMessaging",
]
[patch.crates-io]
cpal = { git = "https://github.com/RustAudio/cpal", rev = "e1612d5d98152f8dc2a62e1b51ef7cbf4f7f26b7" }
# Unify `tree_sitter_language::LanguageFn` between crates.io grammar crates and
# the git tree-sitter above; two instances of the crate would make grammar
# constants type-incompatible with `tree_sitter::Language`.
tree-sitter-language = { git = "https://github.com/tree-sitter/tree-sitter", rev = "803c6ebaac27d69e1808b45058482e868d073ceb" }
async-process = { git = "https://github.com/zed-industries/async-process.git", rev = "0b6d6713570af61806e1e5cb40e0f757cb93fd9d" }
async-task = { git = "https://github.com/zed-industries/async-task.git", rev = "015845a19fc31752c02367567d3b8900a406f9da" }
windows-capture = { git = "https://github.com/zed-industries/windows-capture.git", rev = "f0d6c1b6691db75461b732f6d5ff56eed002eeb9" }
calloop = { git = "https://github.com/zed-industries/calloop", rev = "3759371fee14c40066d64777e2a36b6ffcc22590" }
livekit = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "0a1c519cfce9b365229026b55de9b9dbdb6fed3c" }
libwebrtc = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "0a1c519cfce9b365229026b55de9b9dbdb6fed3c" }
notify = { git = "https://github.com/zed-industries/notify", rev = "d842f16b2716bd60f09caf3ae3a894237ab38f54" }
notify-types = { git = "https://github.com/zed-industries/notify", rev = "d842f16b2716bd60f09caf3ae3a894237ab38f54" }
webrtc-sys = { git = "https://github.com/zed-industries/livekit-rust-sdks", rev = "0a1c519cfce9b365229026b55de9b9dbdb6fed3c" }
# Avoid panicking when a failed EGL call reports EGL_SUCCESS.
# https://github.com/timothee-haudebourg/khronos-egl/pull/37
khronos-egl = { git = "https://github.com/zed-industries/khronos-egl", rev = "42214b36347b108fd9630ca6254b96dde59e04fe" }
# Includes https://github.com/rust-minidump/minidump-writer/pull/249 to fix crashes on `cmd-q` (https://github.com/zed-industries/zed/issues/57664)
crash-context = { git = "https://github.com/rust-minidump/minidump-writer", rev = "911b04e09b79b736cc15cbe712e83e2d3f348bb9" }
# corgi runs build.rs/proc-macros in a sandbox with no write access outside the
# action's own OUT_DIR. Upstream `scratch` bakes its build-time OUT_DIR in via
# `env!` and hands every crate one shared directory, which the sandbox can't
# grant and a content-addressed build can't share. This patch reads OUT_DIR at
# runtime, so each build script gets a private, writable dir in its own entry —
# where cxx-build writes its shared cxxbridge headers. Kept local rather than a
# cxx git fork so Windows cargo builds are unaffected (a git checkout of cxx
# needs symlink support that Windows CI lacks). webrtc-sys is self-contained, so
# per-crate scratch dirs are sufficient. Upstream issue:
# https://github.com/dtolnay/cxx/issues/1752
scratch = { path = "tooling/corgi/patches/scratch" }
[profile.dev]
split-debuginfo = "unpacked"
incremental = true
codegen-units = 16
debug = "limited"
# mirror configuration for crates compiled for the build platform
# (without this cargo will compile ~400 crates twice)
[profile.dev.build-override]
codegen-units = 16
split-debuginfo = "unpacked"
debug = "limited"
# "debug" is a reserved profile name.
[profile.dbg]
inherits = "dev"
debug = "full"
[profile.dbg.build-override]
debug = "full"
[profile.dev.package]
# proc-macros start
gpui_macros = { opt-level = 3 }
derive_refineable = { opt-level = 3 }
feature_flags_macros = { opt-level = 3 }
settings_macros = { opt-level = 3 }
sqlez_macros = { opt-level = 3, codegen-units = 1 }
ui_macros = { opt-level = 3 }
util_macros = { opt-level = 3 }
quote = { opt-level = 3 }
syn = { opt-level = 3 }
proc-macro2 = { opt-level = 3 }
# proc-macros end
tree-sitter = { opt-level = 3 }
taffy = { opt-level = 3 }
resvg = { opt-level = 3 }
wasmtime = { opt-level = 3 }
cranelift-codegen = { opt-level = 3 }
wasmtime-environ = { opt-level = 3 }
wasmtime-internal-cranelift = { opt-level = 3 }
minidumper = { opt-level = 3 }
serde_json = { opt-level = 3 }
# Build single-source-file crates with cg=1 as it helps make `cargo build` of a whole workspace a bit faster
activity_indicator = { codegen-units = 1 }
assets = { codegen-units = 1 }
breadcrumbs = { codegen-units = 1 }
collections = { codegen-units = 1 }
command_palette = { codegen-units = 1 }
command_palette_hooks = { codegen-units = 1 }
edit_prediction_ui = { codegen-units = 1 }
feature_flags = { codegen-units = 1 }
file_content = { codegen-units = 1 }
file_icons = { codegen-units = 1 }
image_viewer = { codegen-units = 1 }
install_cli = { codegen-units = 1 }
journal = { codegen-units = 1 }
json_schema_store = { codegen-units = 1 }
llama_cpp = { codegen-units = 1 }
lmstudio = { codegen-units = 1 }
menu = { codegen-units = 1 }
notifications = { codegen-units = 1 }
ollama = { codegen-units = 1 }
outline = { codegen-units = 1 }
paths = { codegen-units = 1 }
prettier = { codegen-units = 1 }
project_symbols = { codegen-units = 1 }
refineable = { codegen-units = 1 }
release_channel = { codegen-units = 1 }
reqwest_client = { codegen-units = 1 }
session = { codegen-units = 1 }
sidebar = { codegen-units = 1 }
snippet = { codegen-units = 1 }
snippets_ui = { codegen-units = 1 }
telemetry_events = { codegen-units = 1 }
theme_selector = { codegen-units = 1 }
time_format = { codegen-units = 1 }
ui_input = { codegen-units = 1 }
zed_actions = { codegen-units = 1 }
[profile.release]
debug = "limited"
lto = "thin"
codegen-units = 1
[profile.release.package]
zed = { codegen-units = 16 }
[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"
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"
# Dylint discovers our custom lints through this entry, so `cargo dylint --all`
# runs them without a `--path` argument. The `lints` package pins its own
# nightly toolchain (see `tooling/lints/rust-toolchain.toml`) and is kept out of
# this workspace on purpose.
[workspace.metadata.dylint]
libraries = [{ path = "tooling/lints" }]