Building Zed for Windows

The following commands may be executed in any shell.

Repository

Clone down the Zed repository.

Dependencies

  • Install rustup

  • Install Visual Studio with the optional components MSVC v*** - VS YYYY C++ x64/x86 build tools and MSVC v*** - VS YYYY C++ x64/x86 Spectre-mitigated libs (latest) (v*** is your VS version and YYYY is year when your VS was released. Pay attention to the architecture and change it to yours if needed.)

  • Install Windows 11 or 10 SDK depending on your system, but ensure that at least Windows 10 SDK version 2104 (10.0.20348.0) is installed on your machine. You can download it from the Windows SDK Archive

  • Install CMake (required by a dependency)

Backend dependencies

This section is still in development. The instructions are not yet complete.

If you are developing collaborative features of Zed, you'll need to install the dependencies of zed's collab server:

Alternatively, if you have Docker installed you can bring up all the collab dependencies using Docker Compose:

docker compose up -d

Building from source

Once you have the dependencies installed, you can build Zed using Cargo.

For a debug build:

cargo run

For a release build:

cargo run --release

And to run the tests:

cargo test --workspace

Installing from msys2

MSYS2 distribution provides Zed as a package mingw-w64-zed. The package is available for UCRT64, MINGW64 and CLANG64 repositories. To download it, run

pacman -Syu
pacman -S $MINGW_PACKAGE_PREFIX-zed

then you can run zed in a shell.

You can see the build script for more details on build process.

Please, report any issue in msys2/MINGW-packages/issues first.

Troubleshooting

Can't compile zed

Before reporting the issue, make sure that you have the latest rustc version with rustup update.

Cargo errors claiming that a dependency is using unstable features

Try cargo clean and cargo build.

STATUS_ACCESS_VIOLATION

This error can happen if you are using the "rust-lld.exe" linker. Consider trying a different linker.

If you are using a global config, consider moving the Zed repository to a nested directory and add a .cargo/config.toml with a custom linker config in the parent directory.

See this issue for more information #12041

Invalid RC path selected

Sometimes, depending on the security rules applied to your laptop, you may get the following error while compiling Zed:

error: failed to run custom build command for `zed(C:\Users\USER\src\zed\crates\zed)`

Caused by:
  process didn't exit successfully: `C:\Users\USER\src\zed\target\debug\build\zed-b24f1e9300107efc\build-script-build` (exit code: 1)
  --- stdout
  cargo:rerun-if-changed=../../.git/logs/HEAD
  cargo:rustc-env=ZED_COMMIT_SHA=25e2e9c6727ba9b77415588cfa11fd969612adb7
  cargo:rustc-link-arg=/stack:8388608
  cargo:rerun-if-changed=resources/windows/app-icon.ico
  package.metadata.winresource does not exist
  Selected RC path: 'bin\x64\rc.exe'

  --- stderr
  The system cannot find the path specified. (os error 3)
warning: build failed, waiting for other jobs to finish...

In order to fix this issue, you can manually set the ZED_RC_TOOLKIT_PATH environment variable to the RC toolkit path. Usually, you can set it to: C:\Program Files (x86)\Windows Kits\10\bin\<SDK_version>\x64.

See this issue for more information.

Build fails: Path too long

You may receive an error like the following when building

error: failed to get `pet` as a dependency of package `languages v0.1.0 (D:\a\zed-windows-builds\zed-windows-builds\crates\languages)`

Caused by:
  failed to load source for dependency `pet`

Caused by:
  Unable to update https://github.com/microsoft/python-environment-tools.git?rev=ffcbf3f28c46633abd5448a52b1f396c322e0d6c#ffcbf3f2

Caused by:
  path too long: 'C:/Users/runneradmin/.cargo/git/checkouts/python-environment-tools-903993894b37a7d2/ffcbf3f/crates/pet-conda/tests/unix/conda_env_without_manager_but_found_in_history/some_other_location/conda_install/conda-meta/python-fastjsonschema-2.16.2-py310hca03da5_0.json'; class=Filesystem (30)

In order to solve this, you can enable longpath support for git and Windows.

For git: git config --system core.longpaths true

And for Windows with this PS command:

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force

For more information on this, please see win32 docs

(note that you will need to restart your system after enabling longpath support)