Zed's hang telemetry could say a hang happened, but not what the app was doing. This PR adds a foreground journal to gpui (behind the `profiler` feature): the main thread records task polls, action handlers, input dispatches, window draws, and frame presentations into a fixed-size ring, and boundary entries — a newly drawn frame's presentation, or the foreground going idle — partition that stream into activity intervals. Recording is designed to be cheap enough to ship enabled: sub-threshold task polls fold into a counter instead of individual entries, and the ring is drained in bounded chunks off the main thread. A `HangDetector` drains the journal and reports an incident for any interval containing a single event at or above the hang threshold (100ms in release), or whose cumulative foreground spend reaches a frame budget (8ms in release) — catching both one long stall and many small pieces of work that together drop a frame. Incidents serialize with phase (startup/steady), stall and active durations, busy fraction, dirty-to-present time, and up to 8 contributors in start order with nesting depth: task polls carry their spawn location, actions their names, inputs their kind. Zed batches the top 10 incidents by stall per 30 minutes plus a total incident count into a "Hang Incidents" telemetry event, flushes the remainder on quit, and drops the old per-location "Hang Report" histograms this replaces. Release Notes: - N/A
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
On macOS, Linux, and Windows you can download Zed directly or install Zed via your local package manager (macOS/Linux/Windows).
Other platforms are not yet available:
- Web (tracking discussion)
Developing Zed
Contributing
See CONTRIBUTING.md for ways you can contribute to Zed.
Also... we're hiring! Check out our jobs page for open roles.
Licensing
Zed source code is licensed primarily under GPL-3.0-or-later, with Apache-2.0 components where marked.
License information for third party dependencies must be correctly provided for CI to pass.
We use cargo-about to automatically comply with open source licenses. If CI is failing, check the following:
- Is it showing a
no license specifiederror for a crate you've created? If so, addpublish = falseunder[package]in your crate's Cargo.toml. - Is the error
failed to satisfy license requirementsfor a dependency? If so, first determine what license the project has and whether this system is sufficient to comply with this license's requirements. If you're unsure, ask a lawyer. Once you've verified that this system is acceptable add the license's SPDX identifier to theacceptedarray inscript/licenses/zed-licenses.toml. - Is
cargo-aboutunable to find the license for a dependency? If so, add a clarification field at the end ofscript/licenses/zed-licenses.toml, as specified in the cargo-about book.
Sponsorship
Zed is developed by Zed Industries, Inc., a for-profit company.
If you’d like to financially support the project, you can do so via GitHub Sponsors. Sponsorships go directly to Zed Industries and are used as general company revenue. There are no perks or entitlements associated with sponsorship.