Workspace Configuration
Glass uses Cargo’s workspace feature to manage 200+ crates:Workspace Resolver
Glass uses Cargo resolver version 2, which provides better dependency resolution and feature unification.
Build Profiles
Development Profile
- Fast incremental compilation
- Unpacked debug info for faster linking
- 16 codegen units for parallelism
- Optimized proc-macros (see below)
Development Build Override
Release Profile
- Thin LTO - Link-time optimization across crates
- Single codegen unit - Maximum optimization
- Limited debug info - For crash reports
zed binary uses 16 codegen units to speed up final linking.
Release-Fast Profile
Proc-Macro Optimization
- GPUI Macros
- Settings Macros
- Macro Dependencies
GPUI macros are heavily used during compilation:Compiling at opt-level 3 significantly speeds up macro expansion.
Critical Dependency Optimization
Certain dependencies are optimized even in debug builds:Single-File Crate Optimization
Small crates compile faster with a single codegen unit:Build Scripts
Several crates use build scripts for code generation:Protocol Buffer Generation
crates/proto/build.rs- Generates Rust code from
.protofiles - Uses
prost-build - Creates RPC message types
Language Server Types
crates/language/build.rs- May generate language-specific bindings
- Processes language definitions
Extension API
crates/extension_api/build.rs- Generates WASM interface types
- Creates extension API bindings
Platform-Specific
crates/native_platforms/src/apple/build.rs- macOS and iOS specific generation
- Objective-C bindings
Platform Targets
macOS
Windows
Linux
No special build configuration required. Dependencies:Build Scripts
Glass provides helper scripts in thescript/ directory:
script/cargo
Wrapscargo with additional functionality:
- Custom build flags
- Environment setup
- Platform-specific configuration
script/clippy
Runs Clippy with workspace settings:Platform Bundling
- script/bundle-mac - Create macOS .app bundle
- script/bundle-linux - Create Linux AppImage/packages
- script/bundle-windows.ps1 - Create Windows installer
Dependency Patches
Glass patches certain dependencies:- Bug fixes
- Performance improvements
- Features not yet in upstream
GPUI Development
For local GPUI development, uncomment the patch section:Lints Configuration
Rust Lints
Clippy Lints
type_complexity- Complex types are common in GPUItoo_many_arguments- Borrow checker constraintslarge_enum_variant- Performance impact is minimalsingle_range_in_vec_init- Common pattern for text ranges
License Compliance
Glass usescargo-about for license verification:
script/licenses/zed-licenses.toml:
All workspace crates must specify
publish = false or have a valid license. CI checks this automatically.Build Commands
Development Build
Release Build
Release-Fast Build
Running Tests
Building Specific Crates
Compilation Performance
Parallel Compilation
- Development: 16 codegen units per crate
- Release: 1 codegen unit (except zed binary)
- Build scripts: Mirrored configuration
Incremental Compilation
Enabled in development profile:- Caches compilation artifacts
- Significantly speeds up rebuilds
- Disabled in release for maximum optimization
Link-Time Optimization
- Thin LTO
- No LTO
Used in release builds:
- Cross-crate inlining
- Dead code elimination
- Faster than full LTO
Build Artifacts
Build output locations:- target/debug/ - Development builds
- target/release/ - Release builds
- target/release-fast/ - Fast release builds
Binary Locations
- target/debug/zed - Main application
- target/debug/cli - CLI tool
- target/debug/zed_visual_test_runner - Visual tests (with feature)
Related Pages
- Architecture Overview - System design
- Crate Organization - Crate structure and dependencies
- GPUI Framework - UI framework details