mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-07 20:39:04 +03:00
02ea6ac845
This commit proposes the addition of "context serveres" and the underlying protocol (model context protocol). Context servers allow simple definition of slash commands in another language and running local on the user machines. This aims to quickly prototype new commands, and provide a way to add personal (or company wide) customizations to the assistant panel, without having to maintain an extension. We can use this to reuse our existing codebase, with authenticators, etc and easily have it provide context into the assistant panel. As such it occupies a different design space as extensions, which I think are more aimed towards long-term, well maintained pieces of code that can be easily distributed. It's implemented as a central crate for easy reusability across the codebase and to easily hook into the assistant panel at all points. Design wise there are a few pieces: 1. client.rs: A simple JSON-RPC client talking over stdio to a spawned server. This is very close to how LSP work and likely there could be a combined client down the line. 2. types.rs: Serialization and deserialization client for the underlying model context protocol. 3. protocol.rs: Handling the session between client and server. 4. manager.rs: Manages settings and adding and deleting servers from a central pool. A server can be defined in the settings.json as: ``` "context_servers": [ {"id": "test", "executable": "python", "args": ["-m", "context_server"] ] ``` ## Quick Example A quick example of how a theoretical backend site can look like. With roughly 100 lines of code (nicely generated by Claude) and a bit of decorator magic (200 lines in total), one can come up with a framework that makes it as easy as: ```python @context_server.slash_command(name="rot13", description="Perform a rot13 transformation") @context_server.argument(name="input", type=str, help="String to rot13") async def rot13(input: str) -> str: return ''.join(chr((ord(c) - 97 + 13) % 26 + 97) if c.isalpha() else c for c in echo.lower()) ``` to define a new slash_command. ## Todo: - Allow context servers to be defined in workspace settings. - Allow passing env variables to context_servers Release Notes: - N/A --------- Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
576 lines
17 KiB
TOML
576 lines
17 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
"crates/activity_indicator",
|
|
"crates/anthropic",
|
|
"crates/assets",
|
|
"crates/assistant",
|
|
"crates/assistant_slash_command",
|
|
"crates/audio",
|
|
"crates/auto_update",
|
|
"crates/breadcrumbs",
|
|
"crates/call",
|
|
"crates/channel",
|
|
"crates/cli",
|
|
"crates/client",
|
|
"crates/clock",
|
|
"crates/collab",
|
|
"crates/collab_ui",
|
|
"crates/collections",
|
|
"crates/command_palette",
|
|
"crates/command_palette_hooks",
|
|
"crates/context_servers",
|
|
"crates/copilot",
|
|
"crates/db",
|
|
"crates/dev_server_projects",
|
|
"crates/diagnostics",
|
|
"crates/editor",
|
|
"crates/extension",
|
|
"crates/extension_api",
|
|
"crates/extension_cli",
|
|
"crates/extensions_ui",
|
|
"crates/feature_flags",
|
|
"crates/feedback",
|
|
"crates/file_finder",
|
|
"crates/file_icons",
|
|
"crates/fs",
|
|
"crates/fsevent",
|
|
"crates/fuzzy",
|
|
"crates/git",
|
|
"crates/git_hosting_providers",
|
|
"crates/go_to_line",
|
|
"crates/google_ai",
|
|
"crates/gpui",
|
|
"crates/gpui_macros",
|
|
"crates/headless",
|
|
"crates/html_to_markdown",
|
|
"crates/http_client",
|
|
"crates/image_viewer",
|
|
"crates/indexed_docs",
|
|
"crates/inline_completion_button",
|
|
"crates/install_cli",
|
|
"crates/journal",
|
|
"crates/language",
|
|
"crates/language_model",
|
|
"crates/language_selector",
|
|
"crates/language_tools",
|
|
"crates/languages",
|
|
"crates/live_kit_client",
|
|
"crates/live_kit_server",
|
|
"crates/lsp",
|
|
"crates/markdown",
|
|
"crates/markdown_preview",
|
|
"crates/media",
|
|
"crates/menu",
|
|
"crates/multi_buffer",
|
|
"crates/node_runtime",
|
|
"crates/notifications",
|
|
"crates/ollama",
|
|
"crates/open_ai",
|
|
"crates/outline",
|
|
"crates/outline_panel",
|
|
"crates/paths",
|
|
"crates/picker",
|
|
"crates/prettier",
|
|
"crates/project",
|
|
"crates/project_panel",
|
|
"crates/project_symbols",
|
|
"crates/proto",
|
|
"crates/quick_action_bar",
|
|
"crates/recent_projects",
|
|
"crates/refineable",
|
|
"crates/refineable/derive_refineable",
|
|
"crates/release_channel",
|
|
"crates/remote",
|
|
"crates/remote_server",
|
|
"crates/repl",
|
|
"crates/rich_text",
|
|
"crates/rope",
|
|
"crates/rpc",
|
|
"crates/search",
|
|
"crates/semantic_index",
|
|
"crates/semantic_version",
|
|
"crates/session",
|
|
"crates/settings",
|
|
"crates/settings_ui",
|
|
"crates/snippet",
|
|
"crates/snippet_provider",
|
|
"crates/sqlez",
|
|
"crates/sqlez_macros",
|
|
"crates/story",
|
|
"crates/storybook",
|
|
"crates/sum_tree",
|
|
"crates/supermaven",
|
|
"crates/supermaven_api",
|
|
"crates/tab_switcher",
|
|
"crates/task",
|
|
"crates/tasks_ui",
|
|
"crates/telemetry_events",
|
|
"crates/terminal",
|
|
"crates/terminal_view",
|
|
"crates/text",
|
|
"crates/theme",
|
|
"crates/theme_importer",
|
|
"crates/theme_selector",
|
|
"crates/time_format",
|
|
"crates/title_bar",
|
|
"crates/ui",
|
|
"crates/ui_input",
|
|
"crates/util",
|
|
"crates/vcs_menu",
|
|
"crates/vim",
|
|
"crates/welcome",
|
|
"crates/workspace",
|
|
"crates/worktree",
|
|
"crates/zed",
|
|
"crates/zed_actions",
|
|
|
|
#
|
|
# Extensions
|
|
#
|
|
|
|
"extensions/astro",
|
|
"extensions/clojure",
|
|
"extensions/csharp",
|
|
"extensions/dart",
|
|
"extensions/deno",
|
|
"extensions/elixir",
|
|
"extensions/elm",
|
|
"extensions/emmet",
|
|
"extensions/erlang",
|
|
"extensions/gleam",
|
|
"extensions/glsl",
|
|
"extensions/haskell",
|
|
"extensions/html",
|
|
"extensions/lua",
|
|
"extensions/ocaml",
|
|
"extensions/php",
|
|
"extensions/prisma",
|
|
"extensions/purescript",
|
|
"extensions/ruff",
|
|
"extensions/ruby",
|
|
"extensions/snippets",
|
|
"extensions/svelte",
|
|
"extensions/terraform",
|
|
"extensions/test-extension",
|
|
"extensions/toml",
|
|
"extensions/uiua",
|
|
"extensions/vue",
|
|
"extensions/zig",
|
|
|
|
#
|
|
# Tooling
|
|
#
|
|
|
|
"tooling/xtask",
|
|
]
|
|
default-members = ["crates/zed"]
|
|
|
|
[workspace.dependencies]
|
|
#
|
|
# Workspace member crates
|
|
#
|
|
|
|
activity_indicator = { path = "crates/activity_indicator" }
|
|
ai = { path = "crates/ai" }
|
|
anthropic = { path = "crates/anthropic" }
|
|
assets = { path = "crates/assets" }
|
|
assistant = { path = "crates/assistant" }
|
|
assistant_slash_command = { path = "crates/assistant_slash_command" }
|
|
audio = { path = "crates/audio" }
|
|
auto_update = { path = "crates/auto_update" }
|
|
breadcrumbs = { path = "crates/breadcrumbs" }
|
|
call = { path = "crates/call" }
|
|
channel = { path = "crates/channel" }
|
|
cli = { path = "crates/cli" }
|
|
client = { path = "crates/client" }
|
|
clock = { path = "crates/clock" }
|
|
collab = { path = "crates/collab" }
|
|
collab_ui = { path = "crates/collab_ui" }
|
|
collections = { path = "crates/collections" }
|
|
command_palette = { path = "crates/command_palette" }
|
|
command_palette_hooks = { path = "crates/command_palette_hooks" }
|
|
context_servers = { path = "crates/context_servers" }
|
|
copilot = { path = "crates/copilot" }
|
|
db = { path = "crates/db" }
|
|
dev_server_projects = { path = "crates/dev_server_projects" }
|
|
diagnostics = { path = "crates/diagnostics" }
|
|
editor = { path = "crates/editor" }
|
|
extension = { path = "crates/extension" }
|
|
extensions_ui = { path = "crates/extensions_ui" }
|
|
feature_flags = { path = "crates/feature_flags" }
|
|
feedback = { path = "crates/feedback" }
|
|
file_finder = { path = "crates/file_finder" }
|
|
file_icons = { path = "crates/file_icons" }
|
|
fs = { path = "crates/fs" }
|
|
fsevent = { path = "crates/fsevent" }
|
|
fuzzy = { path = "crates/fuzzy" }
|
|
git = { path = "crates/git" }
|
|
git_hosting_providers = { path = "crates/git_hosting_providers" }
|
|
go_to_line = { path = "crates/go_to_line" }
|
|
google_ai = { path = "crates/google_ai" }
|
|
gpui = { path = "crates/gpui" }
|
|
gpui_macros = { path = "crates/gpui_macros" }
|
|
handlebars = "4.3"
|
|
headless = { path = "crates/headless" }
|
|
html_to_markdown = { path = "crates/html_to_markdown" }
|
|
http_client = { path = "crates/http_client" }
|
|
image_viewer = { path = "crates/image_viewer" }
|
|
indexed_docs = { path = "crates/indexed_docs" }
|
|
inline_completion_button = { path = "crates/inline_completion_button" }
|
|
install_cli = { path = "crates/install_cli" }
|
|
journal = { path = "crates/journal" }
|
|
language = { path = "crates/language" }
|
|
language_model = { path = "crates/language_model" }
|
|
language_selector = { path = "crates/language_selector" }
|
|
language_tools = { path = "crates/language_tools" }
|
|
languages = { path = "crates/languages" }
|
|
live_kit_client = { path = "crates/live_kit_client" }
|
|
live_kit_server = { path = "crates/live_kit_server" }
|
|
lsp = { path = "crates/lsp" }
|
|
markdown = { path = "crates/markdown" }
|
|
markdown_preview = { path = "crates/markdown_preview" }
|
|
media = { path = "crates/media" }
|
|
menu = { path = "crates/menu" }
|
|
multi_buffer = { path = "crates/multi_buffer" }
|
|
node_runtime = { path = "crates/node_runtime" }
|
|
notifications = { path = "crates/notifications" }
|
|
ollama = { path = "crates/ollama" }
|
|
open_ai = { path = "crates/open_ai" }
|
|
outline = { path = "crates/outline" }
|
|
outline_panel = { path = "crates/outline_panel" }
|
|
paths = { path = "crates/paths" }
|
|
picker = { path = "crates/picker" }
|
|
plugin = { path = "crates/plugin" }
|
|
plugin_macros = { path = "crates/plugin_macros" }
|
|
prettier = { path = "crates/prettier" }
|
|
project = { path = "crates/project" }
|
|
project_panel = { path = "crates/project_panel" }
|
|
project_symbols = { path = "crates/project_symbols" }
|
|
proto = { path = "crates/proto" }
|
|
quick_action_bar = { path = "crates/quick_action_bar" }
|
|
recent_projects = { path = "crates/recent_projects" }
|
|
refineable = { path = "crates/refineable" }
|
|
release_channel = { path = "crates/release_channel" }
|
|
remote = { path = "crates/remote" }
|
|
remote_server = { path = "crates/remote_server" }
|
|
repl = { path = "crates/repl" }
|
|
rich_text = { path = "crates/rich_text" }
|
|
rope = { path = "crates/rope" }
|
|
rpc = { path = "crates/rpc" }
|
|
search = { path = "crates/search" }
|
|
semantic_index = { path = "crates/semantic_index" }
|
|
semantic_version = { path = "crates/semantic_version" }
|
|
session = { path = "crates/session" }
|
|
settings = { path = "crates/settings" }
|
|
settings_ui = { path = "crates/settings_ui" }
|
|
snippet = { path = "crates/snippet" }
|
|
snippet_provider = { path = "crates/snippet_provider" }
|
|
sqlez = { path = "crates/sqlez" }
|
|
sqlez_macros = { path = "crates/sqlez_macros" }
|
|
story = { path = "crates/story" }
|
|
storybook = { path = "crates/storybook" }
|
|
sum_tree = { path = "crates/sum_tree" }
|
|
supermaven = { path = "crates/supermaven" }
|
|
supermaven_api = { path = "crates/supermaven_api" }
|
|
tab_switcher = { path = "crates/tab_switcher" }
|
|
task = { path = "crates/task" }
|
|
tasks_ui = { path = "crates/tasks_ui" }
|
|
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_importer = { path = "crates/theme_importer" }
|
|
theme_selector = { path = "crates/theme_selector" }
|
|
time_format = { path = "crates/time_format" }
|
|
title_bar = { path = "crates/title_bar" }
|
|
ui = { path = "crates/ui" }
|
|
ui_input = { path = "crates/ui_input" }
|
|
util = { path = "crates/util" }
|
|
vcs_menu = { path = "crates/vcs_menu" }
|
|
vim = { path = "crates/vim" }
|
|
welcome = { path = "crates/welcome" }
|
|
workspace = { path = "crates/workspace" }
|
|
worktree = { path = "crates/worktree" }
|
|
zed = { path = "crates/zed" }
|
|
zed_actions = { path = "crates/zed_actions" }
|
|
|
|
#
|
|
# External crates
|
|
#
|
|
|
|
aho-corasick = "1.1"
|
|
alacritty_terminal = { git = "https://github.com/alacritty/alacritty", rev = "cacdb5bb3b72bad2c729227537979d95af75978f" }
|
|
any_vec = "0.14"
|
|
anyhow = "1.0.86"
|
|
ashpd = "0.9.1"
|
|
async-compression = { version = "0.4", features = ["gzip", "futures-io"] }
|
|
async-dispatcher = "0.1"
|
|
async-fs = "1.6"
|
|
async-pipe = { git = "https://github.com/zed-industries/async-pipe-rs", rev = "82d00a04211cf4e1236029aa03e6b6ce2a74c553" }
|
|
async-recursion = "1.0.0"
|
|
async-tar = "0.4.2"
|
|
async-trait = "0.1"
|
|
async-tungstenite = "0.23"
|
|
async-watch = "0.3.1"
|
|
async_zip = { version = "0.0.17", features = ["deflate", "deflate64"] }
|
|
base64 = "0.22"
|
|
bitflags = "2.6.0"
|
|
blade-graphics = { git = "https://github.com/kvark/blade", rev = "ac25c77ed8d86c386a541c935ffe0a0f6024e701" }
|
|
blade-macros = { git = "https://github.com/kvark/blade", rev = "ac25c77ed8d86c386a541c935ffe0a0f6024e701" }
|
|
blade-util = { git = "https://github.com/kvark/blade", rev = "ac25c77ed8d86c386a541c935ffe0a0f6024e701" }
|
|
cargo_metadata = "0.18"
|
|
cargo_toml = "0.20"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
clap = { version = "4.4", features = ["derive"] }
|
|
clickhouse = "0.11.6"
|
|
cocoa = "0.25"
|
|
core-foundation = "0.9.3"
|
|
core-foundation-sys = "0.8.6"
|
|
ctor = "0.2.6"
|
|
dashmap = "6.0"
|
|
derive_more = "0.99.17"
|
|
dirs = "4.0"
|
|
emojis = "0.6.1"
|
|
env_logger = "0.11"
|
|
exec = "0.3.1"
|
|
fork = "0.1.23"
|
|
futures = "0.3"
|
|
futures-batch = "0.6.1"
|
|
futures-lite = "1.13"
|
|
git2 = { version = "0.19", default-features = false }
|
|
globset = "0.4"
|
|
heed = { version = "0.20.1", features = ["read-txn-no-tls"] }
|
|
hex = "0.4.3"
|
|
hyper = "0.14"
|
|
html5ever = "0.27.0"
|
|
ignore = "0.4.22"
|
|
image = "0.25.1"
|
|
indexmap = { version = "1.6.2", features = ["serde"] }
|
|
indoc = "2"
|
|
# We explicitly disable http2 support in isahc.
|
|
isahc = { version = "1.7.2", default-features = false, features = [
|
|
"text-decoding",
|
|
] }
|
|
itertools = "0.11.0"
|
|
jsonwebtoken = "9.3"
|
|
lazy_static = "1.4.0"
|
|
libc = "0.2"
|
|
linkify = "0.10.0"
|
|
log = { version = "0.4.16", features = ["kv_unstable_serde", "serde"] }
|
|
markup5ever_rcdom = "0.3.0"
|
|
nanoid = "0.4"
|
|
nix = "0.28"
|
|
num-format = "0.4.4"
|
|
once_cell = "1.19.0"
|
|
ordered-float = "2.1.1"
|
|
palette = { version = "0.7.5", default-features = false, features = ["std"] }
|
|
parking_lot = "0.12.1"
|
|
pathdiff = "0.2"
|
|
profiling = "1"
|
|
postage = { version = "0.5", features = ["futures-traits"] }
|
|
pretty_assertions = "1.3.0"
|
|
prost = "0.9"
|
|
prost-build = "0.9"
|
|
prost-types = "0.9"
|
|
pulldown-cmark = { version = "0.10.0", default-features = false }
|
|
rand = "0.8.5"
|
|
regex = "1.5"
|
|
repair_json = "0.1.0"
|
|
rsa = "0.9.6"
|
|
runtimelib = { version = "0.14", default-features = false, features = [
|
|
"async-dispatcher-runtime",
|
|
] }
|
|
rusqlite = { version = "0.29.0", features = ["blob", "array", "modern_sqlite"] }
|
|
rustc-demangle = "0.1.23"
|
|
rust-embed = { version = "8.4", features = ["include-exclude"] }
|
|
schemars = {version = "0.8", features = ["impl_json_schema"]}
|
|
semver = "1.0"
|
|
serde = { version = "1.0", features = ["derive", "rc"] }
|
|
serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
|
|
serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
|
|
serde_json_lenient = { version = "0.1", features = [
|
|
"preserve_order",
|
|
"raw_value",
|
|
] }
|
|
serde_repr = "0.1"
|
|
sha2 = "0.10"
|
|
shellexpand = "2.1.0"
|
|
shlex = "1.3.0"
|
|
signal-hook = "0.3.17"
|
|
similar = "1.3"
|
|
simplelog = "0.12.2"
|
|
smallvec = { version = "1.6", features = ["union"] }
|
|
smol = "1.2"
|
|
strsim = "0.11"
|
|
strum = { version = "0.25.0", features = ["derive"] }
|
|
subtle = "2.5.0"
|
|
sys-locale = "0.3.1"
|
|
sysinfo = "0.30.7"
|
|
tempfile = "3.9.0"
|
|
thiserror = "1.0.29"
|
|
tiktoken-rs = "0.5.9"
|
|
time = { version = "0.3", features = [
|
|
"macros",
|
|
"parsing",
|
|
"serde",
|
|
"serde-well-known",
|
|
"formatting",
|
|
] }
|
|
tiny_http = "0.8"
|
|
toml = "0.8"
|
|
tokio = { version = "1", features = ["full"] }
|
|
tower-http = "0.4.4"
|
|
tree-sitter = { version = "0.22", features = ["wasm"] }
|
|
tree-sitter-bash = "0.21"
|
|
tree-sitter-c = "0.21"
|
|
tree-sitter-cpp = "0.22"
|
|
tree-sitter-css = "0.21"
|
|
tree-sitter-elixir = "0.2"
|
|
tree-sitter-embedded-template = "0.20.0"
|
|
tree-sitter-go = "0.21"
|
|
tree-sitter-go-mod = { git = "https://github.com/camdencheek/tree-sitter-go-mod", rev = "1f55029bacd0a6a11f6eb894c4312d429dcf735c", package = "tree-sitter-gomod" }
|
|
tree-sitter-gowork = { git = "https://github.com/d1y/tree-sitter-go-work", rev = "dcbabff454703c3a4bc98a23cf8778d4be46fd22" }
|
|
tree-sitter-heex = { git = "https://github.com/phoenixframework/tree-sitter-heex", rev = "6dd0303acf7138dd2b9b432a229e16539581c701" }
|
|
tree-sitter-html = "0.20"
|
|
tree-sitter-jsdoc = "0.21"
|
|
tree-sitter-json = "0.21"
|
|
tree-sitter-md = { git = "https://github.com/zed-industries/tree-sitter-markdown", rev = "e3855e37f8f2c71aa7513c18a9c95fb7461b1b10" }
|
|
protols-tree-sitter-proto = "0.2"
|
|
tree-sitter-python = "0.21"
|
|
tree-sitter-regex = "0.21"
|
|
tree-sitter-ruby = "0.21"
|
|
tree-sitter-rust = "0.21"
|
|
tree-sitter-typescript = "0.21"
|
|
tree-sitter-yaml = "0.6"
|
|
unindent = "0.1.7"
|
|
unicase = "2.6"
|
|
unicode-segmentation = "1.10"
|
|
url = "2.2"
|
|
uuid = { version = "1.1.2", features = ["v4", "v5", "serde"] }
|
|
wasmparser = "0.201"
|
|
wasm-encoder = "0.201"
|
|
wasmtime = { version = "21.0.1", default-features = false, features = [
|
|
"async",
|
|
"demangle",
|
|
"runtime",
|
|
"cranelift",
|
|
"component-model",
|
|
] }
|
|
wasmtime-wasi = "21.0.1"
|
|
which = "6.0.0"
|
|
wit-component = "0.201"
|
|
|
|
[workspace.dependencies.async-stripe]
|
|
version = "0.38"
|
|
default-features = false
|
|
features = [
|
|
"runtime-tokio-hyper-rustls",
|
|
"billing",
|
|
"checkout",
|
|
"events",
|
|
# The features below are only enabled to get the `events` feature to build.
|
|
"chrono",
|
|
"connect",
|
|
]
|
|
|
|
[workspace.dependencies.windows]
|
|
version = "0.58"
|
|
features = [
|
|
"implement",
|
|
"Foundation_Numerics",
|
|
"System",
|
|
"System_Threading",
|
|
"UI_ViewManagement",
|
|
"Wdk_System_SystemServices",
|
|
"Win32_Globalization",
|
|
"Win32_Graphics_Direct2D",
|
|
"Win32_Graphics_Direct2D_Common",
|
|
"Win32_Graphics_DirectWrite",
|
|
"Win32_Graphics_Dwm",
|
|
"Win32_Graphics_Dxgi_Common",
|
|
"Win32_Graphics_Gdi",
|
|
"Win32_Graphics_Imaging",
|
|
"Win32_Graphics_Imaging_D2D",
|
|
"Win32_Security",
|
|
"Win32_Security_Credentials",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_Com",
|
|
"Win32_System_Com_StructuredStorage",
|
|
"Win32_System_DataExchange",
|
|
"Win32_System_LibraryLoader",
|
|
"Win32_System_Memory",
|
|
"Win32_System_Ole",
|
|
"Win32_System_SystemInformation",
|
|
"Win32_System_SystemServices",
|
|
"Win32_System_Threading",
|
|
"Win32_System_WinRT",
|
|
"Win32_UI_Controls",
|
|
"Win32_UI_HiDpi",
|
|
"Win32_UI_Input_Ime",
|
|
"Win32_UI_Input_KeyboardAndMouse",
|
|
"Win32_UI_Shell",
|
|
"Win32_UI_WindowsAndMessaging",
|
|
]
|
|
|
|
[patch.crates-io]
|
|
# Patch Tree-sitter for updated wasmtime.
|
|
tree-sitter = { git = "https://github.com/tree-sitter/tree-sitter", rev = "7f4a57817d58a2f134fe863674acad6bbf007228" }
|
|
|
|
[profile.dev]
|
|
split-debuginfo = "unpacked"
|
|
debug = "limited"
|
|
codegen-units = 16
|
|
|
|
[profile.dev.package]
|
|
taffy = { opt-level = 3 }
|
|
cranelift-codegen = { opt-level = 3 }
|
|
resvg = { opt-level = 3 }
|
|
rustybuzz = { opt-level = 3 }
|
|
ttf-parser = { opt-level = 3 }
|
|
wasmtime-cranelift = { opt-level = 3 }
|
|
wasmtime = { opt-level = 3 }
|
|
|
|
[profile.release]
|
|
debug = "limited"
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
|
|
[profile.release.package]
|
|
zed = { codegen-units = 16 }
|
|
|
|
[profile.release-fast]
|
|
inherits = "release"
|
|
lto = false
|
|
codegen-units = 16
|
|
|
|
[workspace.lints.clippy]
|
|
dbg_macro = "deny"
|
|
todo = "deny"
|
|
|
|
# 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"
|
|
|
|
# These are all of the rules that currently have violations in the Zed
|
|
# codebase.
|
|
#
|
|
# We'll want to drive this list down by either:
|
|
# 1. fixing violations of the rule and begin enforcing it
|
|
# 2. deciding we want to allow the rule permanently, at which point
|
|
# we should codify that separately above.
|
|
#
|
|
# This list shouldn't be added to; it should only get shorter.
|
|
# =============================================================================
|
|
|
|
# There are a bunch of rules currently failing in the `style` group, so
|
|
# allow all of those, for now.
|
|
style = { level = "allow", priority = -1 }
|
|
|
|
# Individual rules that have violations in the codebase:
|
|
type_complexity = "allow"
|
|
|
|
[workspace.metadata.cargo-machete]
|
|
ignored = ["bindgen", "cbindgen", "prost_build", "serde"]
|