this post was submitted on 10 Jul 2024
397 points (95.0% liked)

Linux

48208 readers
956 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS
397
submitted 4 months ago* (last edited 4 months ago) by [email protected] to c/[email protected]
 

Zed is a modern open-source code editor, built from the ground up in Rust with a GPU-accelerated renderer.

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 197 points 4 months ago (10 children)

Installer is piping curl into shell

I thought we were past this as a society 😔

[–] [email protected] 3 points 4 months ago

It's made in rust, therefore it must be safe!

[–] [email protected] 4 points 4 months ago (1 children)

GPU-accelerated renderer.

There's a reason why GUIs don't render fonts in the GPU.

[–] [email protected] 2 points 4 months ago (1 children)

Because it's a pain, there's not much more to it really...

[–] [email protected] 1 points 4 months ago (1 children)

AFAIK it's the copy cost for the memory. GPU makes sense only when the hardware allows this copy to go away. Generally, desktop PCs don't have such specialized hardware.

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago) (1 children)

I don't see why you'd have to copy all that much. Depending on the rendering architecture, once all the glyphs are there you'd only need to send the relevant text data to be rendered. I don't see that being much of a problem even when using SDFs. It's an extremely small amount of data by today's standards and it can be updated on demand, but even if it couldn't it would still be extremely fast to send over every frame. If games do it, so can text editors. Real time text rendering on the GPU is a fairly common practice nowadays, unfortunately not in most GUI applications...

[–] [email protected] 1 points 4 months ago (1 children)

At this point I'm not expert enough to explain more details. You can check font renderers.

Below is what's in my mind but it's just a guess.

In typical PC architectures you have IO between the storage and the RAM, and then there's the copying from the RAM to the VRAM, and editors maybe also want copying from the VRAM to RAM for decoration purposes etc.

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago) (1 children)

I am familiar with the current PC and GPU architectures.

IO is a non issue. Even a massive file can be trivially memory mapped and parsed without much hassle, and in the case of a text editor you'd have to deal with IO only when opening or saving said file, not during rendering.

As for the rendering side, again, the amount of memory you'd have to transfer between RAM and VRAM would be minimal. The issue is latency, not speed, but that can be mitigated though asynchonous transfer operations, so if done properly stutters are unlikely.

Rendering monospaced fonts (with decorators and control characters) at thousands of frames a second nowadays is computationally trivial, take a look at refterm for an example. I suspect non-monospaced fonts would require more effort, but it's doable.

As I said at the beginning, it's not impossible, just a pain. But so is font rendering in general honestly :/

[–] [email protected] 1 points 4 months ago

As I indicated, please check (articles and the documentations of) font renderers at this point.

[–] [email protected] 16 points 4 months ago (1 children)

A curl piped into a shell or some unofficial packages from various distros.

At this point I don't get why these projects are not Flatpak-first.

[–] [email protected] -5 points 4 months ago (2 children)

Flatpak is worse for debugging, development, and reproducibility.

Its good for user friendly sandboxing, portability, and convenience.

[–] [email protected] 4 points 4 months ago (1 children)
[–] [email protected] 3 points 4 months ago

You see the conclusion of that article is that flatpaks are not repeoducible after presenting solutions to make it reproducible right?

[–] [email protected] 16 points 4 months ago (2 children)

Is it really worse tho? A single build, against a single runtime, free from distro specificities, packaged by the devs themselves instead of offloading the work on distro maintainers?

[–] [email protected] 3 points 4 months ago* (last edited 4 months ago)

It is. Security problem in core library? Good luck waiting for 27 randos releasing an update. Whereas the distro updates it even before the issue becomes public.

[–] [email protected] 0 points 4 months ago

I'll have to come up with some examples and write something more detailed I think to explore this.

Until NixOS I was very in favor of language specific package managers and things like flatpak.

[–] [email protected] 8 points 4 months ago (1 children)

Can't we basically call this a remote access trojan?

[–] [email protected] 11 points 4 months ago (2 children)

Security wise it doesn't matter, you run the code they wrote in any case. So either trust them or don't. Where it matters is making a mess on your computer and possibly leaving cruft behind when uninstalling. But packages are in the works, Arch even has it since before linux support was announced officially.

[–] [email protected] 4 points 4 months ago (1 children)

This isn't true because until the PR fixing it goes through it downloads other binaries without user consent.

[–] [email protected] 7 points 4 months ago

I think you slipped in the discussion intendations somewhere, this branch of the discussion tree is about the implications of piping curl into bash vs. installing packages

[–] [email protected] 3 points 4 months ago

So did fedora and nix

[–] [email protected] 67 points 4 months ago (1 children)

Not until after you convince these projects to stop using discord

[–] [email protected] 1 points 3 months ago

As long as they just use it for their community and don't fucking lock documentation behind discord I don't really care. But this trend has been so annoying. Due to this I'm in so many servers I have to quit a server just to join a new one

[–] [email protected] 49 points 4 months ago (1 children)
[–] [email protected] 59 points 4 months ago* (last edited 4 months ago) (3 children)

ooh, available for “x86_65” on Alpine

(and they’ve fixed that now)

[–] [email protected] 38 points 4 months ago* (last edited 4 months ago) (1 children)

Have you really not heard of it? It is a new architecture that is a bit better than x64_64.

[–] [email protected] 5 points 4 months ago

Finally. 65 bit processor.

[–] [email protected] 23 points 4 months ago (2 children)

imagine the nightmare of writing a 65 bit instruction set

[–] [email protected] 1 points 4 months ago* (last edited 4 months ago)

Now imagine designing a 65 bit computer. The bus, registers, alu...

You'll probably waste a lotta chips since most of them are designed for working with powers of 2

[–] [email protected] 6 points 4 months ago (1 children)

I don't think it has to be a nightmare per se if you start from scratch.

Instead of 8-bit bytes, you have 5-bit "bytes" (fyves?) Hoozah! Done.

[–] [email protected] 10 points 4 months ago (1 children)

only if double precision can be called high fyves

[–] [email protected] 2 points 4 months ago

This is a mandatory rule now.

[–] [email protected] 35 points 4 months ago (1 children)
[–] [email protected] 15 points 4 months ago
[–] [email protected] 6 points 4 months ago* (last edited 4 months ago)

That was my first thought as well, but I will say that uBlue distros had a signing issue preventing updates recently, due to an oversight with how they rotated their image signing keys, and the easiest (maybe only?) solution was to pipe a curl command to sh. Even though uBlue is trustworthy, they still recommended inspecting the script, which was only a few lines of code.

~~In this case, though, I dunno why they don't just package it as a flatpak or appimage or put it up on cargo.~~

Edit: nvm, they have some package manager options.

[–] [email protected] 11 points 4 months ago

There are various package manager vectors for installation listed in the docs

[–] [email protected] 27 points 4 months ago (2 children)

I mean its already in the nix repos as well as homebrew which means its essentially taken care of

[–] [email protected] 11 points 4 months ago (1 children)

So it should say hey check your distros package repos first.

[–] [email protected] 3 points 4 months ago

Yeah. Especially rather than saying "curl/bash" is the preferred way of installing.

[–] [email protected] 9 points 4 months ago (1 children)

I've been using it with the nix package manager. It's awesome how easy nix works

[–] [email protected] 5 points 4 months ago (1 children)

It appears to be a couple of versions behind ... and have some issues with dynamically linked libraries that hinder LSPs. Neither of these is Zed's fault. I'm sure the packaged version will be up to date momentarily (given the interest in Zed, sooner rather than later). Not sure how easy the LSP thing will be to fix, though there are some workarounds in the github issue.

[–] [email protected] 5 points 4 months ago

yeah the editor is being updated way too fast for nix to keep up. I'm sure it'll be easier once it has its stable release. I see the have a nix flake in the repo, it would be great if they added a package to the outputs instead of just a devshell, nix users could easily build it from master or whichever tag they want.

There are solutions in this issue to the LSP issue. The editor would need to be built in an fhs-env, or they will need to find a way to make it uses binaries installed with nix instead of the ones it downloads itself. VSCode had a similar issue, so there is a version of the package that let's you install extensions through nix, and another that uses an fhs-env that allows extensions to work out of the box.