5a7b8f7fe30a1468245b00eb1b4f119e5bf011fd
This fixes a race-condition that showed up when trying to restart Nightly/Preview/... When running with these release channels, Zed tries to ensure that there's only one instance of Zed running. It does that by listening on a TCP socket to which other instances can connect on start. If the other instance receives a message, it knows that another Zed instance is running and exits. On Linux, though, we ran into a race condition: 1. `kill -0`, which checks whether a process is still running, returns an error, signalling that the old Zed process has exited 2. BUT: the process was still listening on the TCP port. It seems like that on Linux, process resources aren't guaranteed to be cleaned up as soon as signal handling stops working for a process. The fix is to wait until the process is no longer listening on any TCP sockets. There's a slight downside to this: GPUI processes that never listen on any TCP sockets now have to pay the cost of an additional `lsof` call when restarting. We do think that it's a reasonable tradeoff for now though, since the other options (extending the platform interface to provide callbacks, sharing the listening port in the framework, ...) seem wider-reaching only to fix a very local bug. Release Notes: - N/A Co-authored-by: Bennet <bennetbo@gmx.de>
Zed
Welcome to Zed, a high-performance, multiplayer code editor from the creators of Atom and Tree-sitter.
Installation
You can download Zed today for macOS (v10.15+).
Support for additional platforms is on our roadmap:
- Linux (tracking issue)
- Windows (tracking issue)
- Web (tracking issue)
For macOS users, you can also install Zed using Homebrew:
brew install --cask zed
Alternatively, to install the Preview release:
brew install --cask zed@preview
Developing Zed
- Building Zed for macOS
- Building Zed for Linux
- Building Zed for Windows
- Running Collaboration Locally
Contributing
See CONTRIBUTING.md for ways you can contribute to Zed.
Also... we're hiring! Check out our jobs page for open roles.
Licensing
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.
Description
GPUI – Community Edition maintained by Oak Team
https://gpui-ce.github.io/
258 MiB
Languages
Rust
95.6%
WGSL
1.2%
Metal
1.1%
HLSL
1.1%
Python
0.6%
Other
0.3%