Zed is a modern open-source code editor, built from the ground up in Rust with a GPU-accelerated renderer.
I was so happy about this! Been using it on my work MacBook and have been excited to use it on my main laptop!
I still don’t understand why I should need GPU acceleration for my fucking TEXT EDITOR
Same reason you need it for your terminal (see kitty terminal). It’s surprisingly slow to cpu render text, gpu rendering is more power efficient and far more responsive
Surprisingly slow compared to GPU rendering. But… is it really “surprisingly slow”? If it was some 10mhz machine, then sure… I’d agree with you.
Look at the benchmarks on kitty https://sw.kovidgoyal.net/kitty/performance/
Maybe I’m missing something, but shouldn’t the benchmark be a good approximation to the real workload? I don’t see how the measurements reflect the performance difference in real life usages.
Why would I need 100MiB/s processing as opposed to 20MiB/s processing, when I can only read maybe several lines per second?
Faster processing means more efficient processing which means less power draw.
https://github.com/kovidgoyal/kitty/issues/2701#issuecomment-911089374
How about keypress latency? Over 3x faster than gnome terminal and 4x faster than alacritty
It was surprising how gpu accelerated rendering helped read logs better. Niche case, but better was better.
Better in what sense?
More readable on my part. The speed at which logs could write to the screen and still be readable was faster for me compared to before.
Interesting! I’d like to experience this at some point.
Same reason you need it for your terminal
So I don’t.
I mean, it should be clear. Smooth and fast and snappy. If you don’t want that, use neovim like me :)
But… Neovim is smooth, fast and snappy 😭
Hold down
j
and lmk how smooth it is 😅😭😭😭
Idk I’m so used to working in terminal I don’t really notice that. For my eyes, it’s smooth enough
Probably because it’s more efficient. GPUs are designed to render things, which editors do. In a text editor, you’re effectively rendering fonts over a fixed background, which I assume is pretty efficient using the GPU.
We’re not talking about crazy 3D effects here.
Yay to battery savings!
Shouldn’t the DE/Window Manager be handling that? Seems like doing it on a window by window basis would be inefficient (and look inconsistent).
That’s a totally unrelated part of the stack. These days you just have a compositor that combines the output of applications.
The model of out of process rendering in Xorg was done pre-2000s but GPUs became the norm and don’t work well this way.
The model of out of process rendering in Xorg was done pre-2000s but GPUs became the norm and don’t work well this way.
Thats where we get into explicit and implicit sync right?
Also very unrelated, that’s about graphics apis like opengl.
The job of the window manager is to manage windows and very little else. Font rendering is done by the widget toolkit, usually via freetype/harfbuzz.
Smooth scrolling? Maybe I’m wrong
Sppeeed
Think about battery life too 🎉
https://github.com/zed-industries/zed/issues/7054#issuecomment-1916315391
They auto download binaries, even proprietary ones, unsigned and without user interaction.
YEAH security!
tl;dr: General purpose extensions are not even implemented yet
zed is very much an early stages editor; it’ll look very different a year from now
I think they auto install some binaries like nodejs that are required for baseline functionality, but have a popup window for additional language LSPs
I don’t see your point? Nodejs is installed in a custom directory and not added to PATH. It is used by Zed for providing npm support for extensions, and other things. I’m not a Zed developer so I don’t know exactly.
It doesn’t prevent you from using deno or bun in any way.
Quoting the guy:
“that rewriting those in Rust will take an eternity, so not sure what is actionable here, hence closing.”
That’s Rust shining from all its glories here gentlemen…
The best language, if there is nothing changing.
That’s a thing to make a web server or a library that displays Fibonacci, that’s something else when there are humans with changing scopes…
I use rust only if we need performance, for small services. The industry does the same. People use node for backend but e.g. redis is in rust. It’s a good tool if you use it for the right stuff.
EDIT: redis is not in rust, but e.g. aws writes many services in rust
Wtf are you talking about? Redis is in C…
yeah I’m a fucking idiot because I thought wrongly the redis’ language…
You’re not an idiot, you just misremembered. It happens
They were exaggerating to avoid work. Look at the PR diff to determine whether your anti-Rust bias is true.
There are no patch, the issue has been closed as in rejected.
There are a few tasks that are open that are loosely related, but let’s not mix things up.
Moreover, I will take the words of the maintainers over a random potato on a forum.
No offense…
The issue was closed, but a draft PR was linked… potato:
As I mentioned, a couple of tasks loosely related. The patch you are mentioning isn’t complete nor address the real problem.
It is an ugly hack at best.
Refrain from your urge to defend rust at all costs. You are sliding more and more toward the specifics of a project than the fact I stated about rust in general.
If you still not get my initial point I’ve made, read this.
That’s a long read explaining what I meant. My point was about Rust, not Zed or the developers of Zed in particular.
And for the Zed editor, I wish them the best luck, it seems like a great project that people enjoy.
Please feel free to comment and share your thoughts on the article above, my dear favorite nutritious veggie.
Its not Rusts fault, the devs are simply lazy and making insecure products, as they dont want to rewrite everything.
That’s what I am saying.
To quote you: “they don’t want to rewrite everything” …
Writing Rust often implies major refactoring and it takes so much time to write that your requests go: “pewf” closed due to the amount of effort it takes.
Anyway, been there, done that! Zig is probably the real future; it’s a joy to write, it compiles fast, clear to read, and safe.
It has shared libraries and a proper integration with existing C/CPP code base.
You should try it, that’s an amazing language with a real potential to replace the legacy.
I dunno man… I’m not sure I’m so keen on a language that prides itself on not having macros
Comptime replaces macros/reflection.
It’s basically Zig code that runs at compile time in your code…
No other “weird” language to learn; it’s zig all the way. What you would have written in macro is written in zig comptime.
Even the build system is zig…
Same for generics, it’s comptime…
How’s Lapce?
Not much documentation. I tried to use it, but it was really hard to figure out anything.
I tried to read the code but the underlying concept was too complex for me to understand
I never understood the need
It’s not you who needs it.
It’s for buzzword chasers and cost cutters.Rust (=> fast and hip)
Shared (=> outsourced)
AI generated (=> robot devs)Get it?
The Rust hype at least makes sense.
In technical context, yes. I’m a Rustacean myself.
In business/marketing context, …Rustacean
Is that why the mascot’s a crab??
It also makes sense in a business context, because Rust enables memory safety at native speed, and enables building more reliable software due to its strong type system.
Safety and reliability are business critical in many industries.
Vscodium but not running in a browser.
If it can’t run in a terminal, what is the point?
gpu accelerated editor with remote development > terminal editor
There are gpu accelerated terminal emulators… Not sure what you mean by remote development though.
remote development for connecting to a machine without a display server; basically covering the main use case for being constrained to a terminal.
Remote Tunnels in VS Code or JetBrains Gateway for example
I do use a GPU accelerated terminal, but it’s still very limited compared to a GUI; they serve different goals.
I like to be just as comfortable coding remotely as I do locally. I have the same setup on my machine & on servers. TUIs are sometimes a better UI/UX since they tend to not come with so much bloat & compatibility with all window managers as well as working great for extremely lightweight, low-latency pairing like the experience provided by upterm. My terminal is also GPU-acceraletd too for performance.
Fair
VScodium is running in the browser. It is electron based.
Zed is native
I am BEGGING for any editor other than VSCode to have decent remote development. I want to go open source but everything I’ve tried (remote-nvim, distant, tramp, vscodium, etc.) just doesn’t cut it.
What in hell is remote development? You mean
openssh
andvim
, right?Pair programming over the net. The old school way is tmux and vim but to do that you and your partner need port 22 open and most enterprises are gonna be like “hell no you can’t let people connect to your company owned work laptop SSH into your machine”
would wstunnel help? just run that between both machines and pick whatever works best, even if that is ssh
Apparently Lapce has remote development as its core feature. But I only (re?)learned of it today…
How didn’t
tramp
work out for you?Have you tried running doom emacs in tmux on the remote server and accessing it with ssh? Doom emacs is all the good of an emacs environment, all the good of vim keybinds, and they worked in a decent amount of optimizations so it only loads the necessary stuff on demand (mine has a startup time of just over 1 second, slower than vim but barely an inconvenience). Can write a quick script to ssh copy (or git pull) your current configs on the server so you only have to maintain one set of configs if you want
scp ~/.config/doom/config.el username@server:~/.config/doom/config.el
Run emacs in tmux if you want to keep the emacs session open across multiple ssh sessions
holy mother of latency
What about gitpod?
Is VSCode not open source?
Vscode is like Chrome
And
VS Codium is like Chromium
It has Microsoft BLObs baked in as part of the build process. VS Codium is the FLOSS distribution of VS code’s open source code. Liveshare doesn’t appear in the package repo Codium uses (because of the Microsoft BLObs it contains as an extension). For work I manually download the live share extension VSX and load it into vscodium
What I do is use distrobox or any devpod and install it in the container and launch from cli. Works perfectly for me.
IntelliJ products my dude! If you go on there education side you can find the packages for free to compile yourself. There’s tons of guides online to do it.
Zed is now officially the best editor ever
Because I like it
What a lovely answer, made my day fr
Because it was all picture, I had to search around to upvote (using Boost, voting is hidden until you select the comment. Comment is picture? It takes you to the picture (without voting options)).
Worth it. Otter & cat pic brightened my day.
I can see the beginning of something truly great in this editor. It’s going to become better than VS code in a year.
It’s already great for some languages like Go and Rust.
I hope that’s true, but it will be an uphill battle for them to get people to move. VS Code is already pretty good.
VScode is proprietary and slow. If you are using something like that you should use VScodium
But aren’t both the same speedwise?
Yes but one is libre without telemetry
also seems to have some security issues …
They are addressing this here: https://github.com/zed-industries/zed/pull/14034
Because people can make make mistakes…
Loads of important projects have had vulnerabilities that showed up through minor mistakes and oversights. I agree that this shouldn’t happen, but it did. I’d still prefer this project to a closed source editor/IDE and even VSCodes method of having a store full of plugins, many of which are closed source and unverified. The project is in alpha, mistakes and problems are expected. This was obviously an oversight, and after being pointed out, it is being addressed.
Can you elaborate on questionable sources? All the sources I saw were the official sources of the binaries they wanted to download.
Again, the binaries aren’t from questionable sources. From what I can tell they all come from the official source. The problem is them being unsigned, which is a simple oversight that can be made when something is being written by someone who is not security minded. It is alpha software and this is already actively being discussed.
Interesting project, how ever it will be hard to compete with existing editors and its plugin eco-systems.
I don’t think so. The guys who write the plugins are the cracks and the cracks will use zed.
It supports LSPs, and has treesitter syntax highlighting and git integration which honestly makes it 90% of the way there already
Vim keybindings or death
It has those as well
Great!
There ought to be a rule that posts about software releases have to say what it is.
Zed (a high-performance code editor announced in 2022), not to be confused with Xed (a small and lightweight text editor released in 2016)
EDIT: or Yed (a small and simple terminal editor core)
My bad, it’s up now
Anyone care to compare this with Helix?
Why Helix over (neo)Vim?
A better out of the box experience-- fewer plugins required. More discussion here: https://urbanists.social/@markstos/112586854536602496
Cool, but is it possible to add vim bindings to Helix? I’m too used to them, I even use them in Emacs.
A lot of the bindings are the same, because Helix was inspired in part by Vim.
Helix overall tries to make more consistent vocabulary and “nouns” and “verbs” in the keybindings, so there are some breaking changes.
Someone published a more “vim-like” set of keybindings for Helix: https://github.com/LGUG2Z/helix-vim
I started with that and then have slowly disabled a number of them as I come to appreciate the Helix defaults, and have realized that some of these vim-bindings are overriding other Helix bindings that I wanted.
Better/simpler experience out of the box. With Helix you install the LSPs for languages you use and you’re set with a fully featured editor. Manual configuration is only needed for setting themes, keybinds, and small setting changes. It also feels much faster than a fully configured vim/neovim. Lastly its keybinds are inspired by Vim/Kakoune, but different from both.
Very first impressions since I literally just downloaded before writing this, and haven’t read the manual, I may change my mind with more experience.
- It’s incredibly snappy, to my eyes as fast as Helix.
- A lot of stuff that took me a while to figure out in VS Code was immediately obvious. How to toggle inlay hints for Rust? Parameter Icon > Inlay Hints (with the keyboard shortcut there for easy toggling).
- Interactive is generally intuitive because it seems pretty permissive. Tab vs Enter to autocomplete? Either! ctrl-shift-Z vs ctrl-Y to redo? Same thing!
- After being so used to Helix I often reach for keybinds that don’t exist. I might have to learn Vim keybinds because I’m definitely going to keep trying Zed.
- Not sure how I feel about what seems to be an inline discord-like chat/voice-call feature.
Going to check out if there’s git integration, because I couldn’t easily find it.
Git integration seems to be so embedded that it’s easy to miss. Open a git repository folder and you can switch branches and whatnot. But, like, in the command palette, there’s no Git > Pull or Git > Clone as in vscode. (I have barely scratched the surface so it might be there hiding in plain sight.)
What other VCSs are supported?
Going to check out if there’s git integration, because I couldn’t easily find it.
Asking this because I’m noob, not elitist ass: Why a git integration in ide instead of using the cli? I’ve been working only on few projects where git is used, but the cli seems to be a ton easier to understand how to work with than the git integration in vscode which I discarded after few attempts to use
Depends on the features.
Git has some counterintuitive commands for some commands you may want to do when you want to quickly do something. Being able to click a button and have the IDE remember the syntax for you is nice.
Some IDEs have extra non-native Git features like have inlined “git blame” outputs as you edit (easily see a commit message per-line, see who changed what, etc.), better diff/merge tooling (JetBrain’s merge tool comes to mind), being able to revert parts of the file instead of the whole file, etc.
the git integration in vscode which I discarded after few attempts to use
I’m going to be honest, I don’t really like VS Code’s Git integration either. I find it clunky and opinionated with shitty opinions.
Git has some counterintuitive commands
Yeah… ‘git merge main’ weirds me out because my brain likes to think the command is merging current branch TO main instead of other way around
Some IDEs have extra non-native Git features like have inlined “git blame” outputs as you edit (easily see a commit message per-line, see who changed what, etc.), better diff/merge tooling (JetBrain’s merge tool comes to mind), being able to revert parts of the file instead of the whole file, etc.
Okay this sounds very good, so they actually improve git cli feature wise in addition to implementing GUI for it.
Thanks for the reply!
I’m probably more of a git noob than you, but I do usually use the cli. I figured if I’m going to give a gui editor an honest shake I should try to do things the inbuilt, gui, way. And more to the point, I do appreciate a good user interface with information at a glance or click instead of having to type out a command each time.
I’m probably more of a git noob than you
Doubt =D
And more to the point, I do appreciate a good user interface with information at a glance or click instead of having to type out a command each time.
Agreed with good user interface, my criticism was specifically for the vscode default git plugin which I was not compatible with at all but it could be just a me-problem
This video using emacs magit git porcelain might help you see why:
https://m.youtube.com/watch?v=qPfJoeQCIvA&feature=youtu.be
Basically you can go quickly from the log to viewing diffs or any other action on commits or groups of commits and more.
I used to only use git from CLI for 10+ years but mostly only use magit now.
A great git integration can work well in an editor. I use Magit in Emacs, which is probably as full-featured Git-client as there can be. Granted, for operations such as cherry-picking or rebasing on top of a branch or
git reset
I most often use the command line (but Magit for interactive rebase).But editor support for version management can give other benefits as well, for example visually showing which lines are different from the latest version, easy access to file history, easy access to line-based history data (blame), jumping to versions based on that data, etc.
As I understand it vscode support for Git is so basic that it’s easy to understand why one would not see any benefits in it.
I mainly use git with cli, the one thing that’s been super helpful in vscode is gitlens, which shows you who last updated the line you’re on, and lets you look at the commit
Oh that sounds very sweet!
Zed has a lot more features and is GUI-based. Helix is more focused and is CLI-based. I think a more direct comparison would be with VSCode(ium).
They’ll probably dial it back once the hype settles
text editor
GPU-accelerated renderer
What the fuck?
Pretty common feature. Sublime, Lapce, VS Code, certain Emacs distributions, certain NeoVim GUIs… We live in a world where a lot of people have GPUs and CPUs aren’t getting faster so if you want to get more work done (ie, running LSPs, tree sitter, completion engines, snippet engines, debuggers etc) you need to offload some of that work somewhere