ZIm/crates
Julia Ryan 01ec6e0f77
Add workspace-hack (#27277)
This adds a "workspace-hack" crate, see
[mozilla's](https://hg.mozilla.org/mozilla-central/file/3a265fdc9f33e5946f0ca0a04af73acd7e6d1a39/build/workspace-hack/Cargo.toml#l7)
for a concise explanation of why this is useful. For us in practice this
means that if I were to run all the tests (`cargo nextest r
--workspace`) and then `cargo r`, all the deps from the previous cargo
command will be reused. Before this PR it would rebuild many deps due to
resolving different sets of features for them. For me this frequently
caused long rebuilds when things "should" already be cached.

To avoid manually maintaining our workspace-hack crate, we will use
[cargo hakari](https://docs.rs/cargo-hakari) to update the build files
when there's a necessary change. I've added a step to CI that checks
whether the workspace-hack crate is up to date, and instructs you to
re-run `script/update-workspace-hack` when it fails.

Finally, to make sure that people can still depend on crates in our
workspace without pulling in all the workspace deps, we use a `[patch]`
section following [hakari's
instructions](https://docs.rs/cargo-hakari/0.9.36/cargo_hakari/patch_directive/index.html)

One possible followup task would be making guppy use our
`rust-toolchain.toml` instead of having to duplicate that list in its
config, I opened an issue for that upstream: guppy-rs/guppy#481.

TODO:
- [x] Fix the extension test failure
- [x] Ensure the dev dependencies aren't being unified by Hakari into
the main dependencies
- [x] Ensure that the remote-server binary continues to not depend on
LibSSL

Release Notes:

- N/A

---------

Co-authored-by: Mikayla <mikayla@zed.dev>
Co-authored-by: Mikayla Maki <mikayla.c.maki@gmail.com>
2025-04-02 13:26:34 -07:00
..
activity_indicator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
agent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
anthropic Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
askpass Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assets Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_context_editor Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_eval Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_slash_command Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_slash_commands Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_tool Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
assistant_tools Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
audio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
auto_update Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
auto_update_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
aws_http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
bedrock Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
breadcrumbs Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
buffer_diff Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
call Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
channel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
cli Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
clock Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
collab Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
collab_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
collections Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
command_palette_hooks Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
component_preview Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
context_server Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
context_server_settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
copilot Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
credentials_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
dap_adapters Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
db Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
debugger_tools Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
debugger_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
deepseek Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
diagnostics Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
docs_preprocessor Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
editor Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
evals Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension_api chore: Bump Rust edition to 2024 (#27800) 2025-03-31 20:55:27 +02:00
extension_cli Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extension_host Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
extensions_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
feature_flags Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
feedback Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
file_finder Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
file_icons Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fs Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fsevent Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
fuzzy Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git_hosting_providers Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
git_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
go_to_line Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
google_ai Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
gpui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
gpui_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
gpui_tokio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
html_to_markdown Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
http_client_tls Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
icons Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
image_viewer Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
indexed_docs Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
inline_completion Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
inline_completion_button Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
install_cli Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
journal Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_model Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_model_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_models Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
language_tools Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
languages Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
livekit_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
livekit_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
lmstudio Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
lsp Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
markdown Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
markdown_preview Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
media Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
menu Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
migrator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
mistral Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
multi_buffer Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
node_runtime Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
notifications Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ollama Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
open_ai Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
outline Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
outline_panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
paths Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
picker Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prettier Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
project Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
project_panel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
project_symbols Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prompt_library Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
prompt_store Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
proto Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
recent_projects Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
refineable Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
release_channel Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
remote Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
remote_server Finish removing git repository state and scanning logic from worktrees (#27568) 2025-04-01 17:41:20 -04:00
repl Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
reqwest_client Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rich_text Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rope Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
rpc Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
schema_generator Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
search Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
semantic_index Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
semantic_version Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
session Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
settings_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippet Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippet_provider Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
snippets_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sqlez_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
story Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
storybook Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
streaming_diff Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
sum_tree Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
supermaven_api Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
tab_switcher Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
task Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
tasks_ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
telemetry_events Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
terminal Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
terminal_view Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
text Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_extension Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_importer Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
theme_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
time_format Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
title_bar Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
toolchain_selector Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ui Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ui_input Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ui_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
ui_prompt Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
util Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
util_macros Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
vim Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
vim_mode_setting Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
welcome Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
workspace Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
worktree Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zed Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zed_actions Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zeta Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zlog Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00
zlog_settings Add workspace-hack (#27277) 2025-04-02 13:26:34 -07:00